Я пытался обернуть голову вокруг запросов AJAX и в настоящее время реализую некоторую проверку на стороне сервера для мастера twitter-bootstrap в Javascript. Я испытываю какое-то странное поведение, когда функция завершается с ошибкой при первом ее выполнении, но работает во второй раз, как предполагалось. Я упростил свой код в этой структуре:
function do_ajax_validate($user,$email) {
$.ajax({url: "checkuser.php?field=username&query=" + $user, success: function(result){
if (result != 'Valid')
{
$("#userlabel").html(result);
$("#userdiv").addClass("has-error");
$("#userdiv").removeClass("has-success");
$("#username").focus();
is_good[0] = false;
} else {
$("#userlabel").html($user + " is available!");
$("#userdiv").removeClass("has-error");
$("#userdiv").addClass("has-success");
is_good[0] = true;
console.log(is_good[0]);
}
}});
console.log(is_good[0]);
$.ajax({url: "checkuser.php?field=email&query=" + $email, success: function(result){
if (result != 'Valid')
{
$("#emaillabel").html(result);
$("#emaildiv").addClass("has-error");
$("#emaildiv").removeClass("has-success")
$("#email").focus()
is_good[1] = false;
} else {
$("#emaillabel").html('Looks good!');
$("#emaildiv").removeClass("has-error");
$("#emaildiv").addClass("has-success")
is_good[1] = true;
}
}});
console.log(is_good[0]);
console.log(is_good[1]);
if ((is_good[0])&&(is_good[1])) {
return true;
} else {
return false;
}
}
Всякий раз, когда я захожу в консоль и пытаюсь запустить функцию, я вызываю ее с помощью доступного мне пользователя / электронной почты и получаю такой вывод:
do_ajax_validate('available_username', 'available@email.address');
false
false
false
Всякий раз, когда я запускаю точно такую же строку, я получаю такой вывод:
do_ajax_validate('available_username', 'available@email.address');
true
true
true
Затем проверка имени пользователя / электронной почты, которые, как я знаю, заняты, возвращает последние значения:
do_ajax_validate('taken_username', 'taken@email.address');
true
true
true
И (как вы уже догадались) - повторное выполнение функции возвращает ожидаемые результаты:
do_ajax_validate('available_username', 'available@email.address');
false
false
false
Я часами пробовал разные методы и получал те же самые странные результаты. Что я делаю не так?