Так что это мой код для некоторых ajax, которые я делаю.Javascript Если оценка оператора не работает правильно
function check_password(){
var username = $("#username").val();
if(username.length > 0){
var bool = -1;
$('#Loading2').show();
$.post("check_login.php", {
username: $('#username').val(),
password: $('#password').val(),
},
function(response) {
$('#Info2').fadeOut(500);
$('#Loading2').hide();
bool = response.indexOf('success');
setTimeout("finishAjax('Info2', '"+escape(response)+"')", 450);
$('#password').after(bool);
return response.indexOf('success');
});
}
}
function finishAjax(id, response){
$('#'+id).html(unescape(response));
$('#'+id).fadeIn(750);
}
и здесь я пытаюсь обработать возвращаемое значение из функции проверки пароля.
jQuery(function() {
$("#submitl").click(function(){
$(".error").hide();
var hasError = false;
var passwordVal = $("#password").val();
var username = $("#username").val();
if (username == '') {
$("#username").after('<span style="color:red" class="error"><p></p>Please enter a username.</span>');
hasError = true;
} else if (passwordVal == '') {
$("#password").after('<span style="color:red" class="error"><p></p>Please enter a password.</span>');
hasError = true;
} else if (check_password() != 73) {
hasError = true;
$("#password").after(check_password());
}
if (hasError == true) {
return false;
}
});
});
По какой-то причине, если оператор возвращает истину, даже если индекс (возвращаемое значение) есть 73. Я проверить это с помощью JQuery в заявлении, если распечатать значение функции, возвращающей и распечатывает 73. У меня такое чувство, что моя ошибка вызвана динамически типизированными переменными в javascript.
Это асинхронный не синхронный. Ваша функция не будет ждать результата, поэтому всегда будет TRUE. –
Возможный дубликат: десятки вопросов в месяц ;-) – jahroy
Передача строки в 'setTimeout'? ... пожалуйста, не делайте этого –