У меня проблема.Приведенная ниже функция работает на 100%, но оператор if
, который вызывает функцию, разрешается до того, как функция вернет свой результат!
Предупреждение для «test2» покажет предупреждение ДО «с результатами:» + данныекоробка делает.В чем причина?
(Проблема в том, что он ВСЕГДА разрешается в ложь, несмотря ни на что, потому что ничего не возвращается, даже если что-то будет возвращено!)
function checkUsername ( username ) {
$.post("ajax_messages.php",{
func: "checkUsername",
username: username
}, function(data){
alert("result: "+data);
return data;
});
}
$('.send').click( function () {
if ( checkUsername($receiverBox.val()) == "true" ) {
alert("test");
return false;
} else {
alert("test2");
return false;
}
});
Редактировать:
Спасибо за быстрые ответы.Я попробовал следующее:
$.ajaxSetup({
async:false
});
Edit2: Но это также не действовало, как ожидалось.Как нормальный набор функций, так что я буду действовать.Итак, я попробую еще несколько способов ниже
Edit3: Success!Это потрясающе.Немного неуклюжий, но намного более гладкий, чем любой другой метод, который я мог найти.Я надеюсь, что это помогает
var checkUsernameResult = false;
function checkErrorCheckingIsComplete( ) {
if ( checkUsernameResult != false ) {
alert( checkUsernameResult );
}
}
function checkUsername ( username ) {
$.post("ajax_messages.php",{
func: "checkUsername",
username: username
}, function(data){
alert("result: "+data);
checkUsernameResult = data; // each check has one of these
checkErrorCheckingIsComplete(); // all checks have this as the end
});
}
$('.send', $message_box).click( function () {
checkUsername( $receiverBox.val() );
//more checks here
return false;
});