我正在使用ajax在我的控制器中调用POST方法。平均而言,此方法运行15到20秒。
我在该呼叫中使用了aync false,因为我需要等待答案才知道要走哪条路。但是,当我使用async false时,我的加载(gif)没有显示。
$(document).ajaxStart(function() {
$('#overlay').show();
});
$(document).ajaxStop(function() {
$('#overlay').hide();
});
解决问题的最佳方法是什么?
编辑1
我有执行多个验证的save函数并在控制器中调用该方法:
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()) {
...
}
答案 0 :(得分:1)
解决问题的最佳方法是什么?
不要使用async: false
。
浏览器未显示更改,因为async: false
使操作非异步并锁定浏览器。保持异步代码异步,并且在执行代码时可以执行其他操作。
我需要等待答案,知道要走哪条路。
这是代码中某处设计缺陷的结果。您可以尝试查看the question and answers here以获得一些帮助。基本上,您不希望在等待响应时阻止客户端代码,而是希望在响应到来时处理响应。