我有javascript函数不等待ajax执行立即退出没有执行什么问题严重我的代码如下:
我在最后发出警告:正是为了阻止它。 当警报显示我等待服务器的结果并且返回结果不是来自服务器的null。 当我禁用警报时,结果是未定义的。
function getAllBathyms() {
var idbar = $("#list_barrages").val();
var idorg = $("#list_organisations").val();
if (idbar == "" || idbar == "--" || idbar == "NaN") {
alert("veuillez séléctionner un barrage SVP:");
}
if (idorg == "" || idorg == "--" || idorg == "NaN") {
alert("veuillez séléctionner un barrage une agence SVP:");
}
$.ajax({
type: 'POST',
url: '@Url.Content("~/CourbesNiveaux/getAllBathyms")',
data: { 'idbar': idbar, 'idorg': idorg },
success: function (data) {
alert('ok ajax');
console.log('ok ajax');
bathyms = data;
},
error: function () {
alert('server problems');
}
});
return bathyms;
}
答案 0 :(得分:0)
因为ajax是异步的。它不会等待成功事件发生。如果你想这样做,请输入
async:false
代码
答案 1 :(得分:0)
在ajax中添加async:false
$.ajax({
type: 'POST',
async:false,
url: '@Url.Content("~/CourbesNiveaux/getAllBathyms")',
答案 2 :(得分:0)
选项1:您始终可以将AJAX调用设置为同步,但请等待响应时整个页面卡住。只需将参数async:false添加到您的参数集中。 请注意,这是一个非常大的禁忌和坏习惯!
选项2:提供回调或将未来的代码放入成功处理程序
选项3 :您可以使用此处所述的延期/承诺http://blog.mediumequalsmessage.com/promise-deferred-objects-in-javascript-pt1-theory-and-semantics