Я хочу сделать следующий маленький сценарий / вещь.
Есть форма регистрации, и я хочу, чтобы jquery проверил, соответствуют ли введенные данные (например, имя пользователя и / или адрес электронной почты) правилам проверки CakePHP, и вернет эту информацию пользователю в симпатичном окне сообщения.
поэтому я строю следующее (упрощенно):
$("input#UserDisplayName").keyup(function() {
var value = $(this).val();
var status = validateAgainstCakeModel('display_name', value);
var box = $("#DisplayNameMessage");
if ( status == "true" ) {
// show box with a message and so on ...
var message = "This Name is available.";
updateMessageBox( 0, box, message );
} else {
var message = " asdhasjkdhasd";
updateMessageBox( 0, box, message );
}
}
метод проверки:
function validateAndUpdateMessageBox( field , value ) {
// prepare & send ajax request
$.ajax({
url: "register",
type: "POST",
timeout: 5000,
data: { action: "validate", field: field, value: value },
success: function( result ) {
response = result;
}
});
return response;
}
Итак, проблема в асинхронности всего этого. в то время, когда ответ будет возвращен, еще не будет никаких данных, и поэтому функция вернет "undefined".
да, я знаю параметр "async: false", но это блокирует браузер на секунду (или больше).
Есть ли другое решение, чтобы кодировать его так и НЕ блокировать браузер?
спасибо за ответы.