У меня есть форма, на которую я поймаю событие отправки. Мне нужно дождаться звонка $.post
, чтобы решить, отправлять ли его. Я попытался это:Позвольте синхронному коду ждать асинхронного вызова
$('#my_form').submit(function(event){
var data = null;
$.post("/post/call").then(function(_data){
data = _data;
});
if ($.isPlainObject(data) && data.status === 'ko') {
return false; // Do not submit the original form
} else {
// Submit the original form
}
});
Но data
результатов всегда null
, а также, если _data
является индексируются, поскольку $.post
является asynchrounous вызова. Как я могу ждать завершения звонка $.post
?
EDIT: Как написано в комментариях, я хотел бы избежать $.ajax({async: true})
, потому что он замораживает страницу; есть ли способ получить тот же эффект без замораживания страницы?
возможного дубликата [Синхронный вызовы с JQuery] (http://stackoverflow.com/questions/2942544/synchronous-calls- с-jquery) –
Почему бы просто не положить то, что вы хотите подождать, чтобы сделать в конце асинхронный обратный вызов? – Danny
, где вы получаете тогда .then(). функция обратного вызова присоединяется к сообщению с запятой. ваш if должен также находиться в обратном вызове, потому что данные не установлены до завершения записи. –