Я использую ajax для вызова метода POST в контроллере. В среднем этот метод работает от 15 до 20 секунд.async ajax call - show loading gif
Я использую aync false в этом вызове, потому что мне нужно подождать ответа, чтобы узнать, к какому пути идти. Но, когда я использую async false, моя загрузка (gif) не отображается.
$(document).ajaxStart(function() {
$('#overlay').show();
});
$(document).ajaxStop(function() {
$('#overlay').hide();
});
Что такое лучший способ решить это?
EDIT 1
Я функция сохранения, которая выполняет несколько проверок и вызывает метод в контроллере:
function salvarInformacoes(pedidos, ums, callback) {
$.ajax({
url: 'PlanoCortes/SalvarInformacoes',
type: 'POST',
data: {
sglDeposito: $("#ddl-Deposito option:selected").text(),
codUnimetPCP: $('#ddl-Um-sip').val(),
numEtapa: $("#ddl-Operacao").val(),
rotinaUM: $('#chk-Rotina-UM').is(":checked"),
dscEtapa: $("#ddl-Operacao option:selected").text(),
dadosPedidosJson: pedidos,
dadosUMsJson: ums,
corteVirtual: corteVirtual
},
success: callback
});
}
function salvar() {
var resultado = false;
...
salvarInformacoes(JSON.stringify(pedidos), JSON.stringify(ums), myCallback);
function myCallback(retorno) {
if (retorno.success != false) {
...
}
else {
resultado = false;
return;
}
resultado = true;
}
return resultado;
}
...
Перед методом "myCallback" называется , функция возвращает false. Таким образом, код внутри заявления ниже никогда не выполняется:
if (salvar()) {
...
}
Спасибо за ответ. Я изучаю этот пост. Я еще не понимаю, что я могу сделать, когда мой вызов будет в цикле (для). Я могу сделать это без async? –
@CarlosHenriqueBiazinEsteves: Ну, поскольку здесь нет информации о том, что вы пытаетесь сделать, я не могу сказать вам, как это сделать. Но для вопроса, который задают вопрос, ответ заключается в том, что вы блокируете браузер от продолжения, поэтому он не продолжает следующую операцию. В общем, это очень плохой дизайн (вот почему вы столкнулись с этой проблемой) и не должны использоваться в первую очередь. – David
Я отредактировал мой пост, потому что я до сих пор не могу понять, как это сделать ... –