我有我的javascript函数不等待ajax执行,立即退出,没有等待执行,严重的问题是什么,我的代码如下:
我在最后发出了一个警告:正是为了阻止它。当警报显示时,我等待了一点来自服务器的结果,从服务器返回的结果是result not 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;
}发布于 2014-02-20 17:49:13
因为ajax是异步的。它不会等待成功事件发生。如果您想这样做,请将
async:false在代码中
发布于 2014-02-20 17:53:11
在ajax中添加async:false
$.ajax({
type: 'POST',
async:false,
url: '@Url.Content("~/CourbesNiveaux/getAllBathyms")',发布于 2014-02-20 17:58:04
选项1:您可以始终将AJAX调用设置为同步,但要准备好在等待响应时整个页面都会阻塞。只需将参数async: false添加到您的参数集中。请注意,这是一个非常非常大的禁忌和糟糕的做法!
选项2:提供回调或将您未来的代码放入成功处理程序中
选项3:您可以使用此处描述的defer/promise http://blog.mediumequalsmessage.com/promise-deferred-objects-in-javascript-pt1-theory-and-semantics
https://stackoverflow.com/questions/21903920
复制相似问题