javascript函数不等待ajax执行

时间:2014-02-20 09:45:23

标签: javascript jquery ajax

我有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;
}

3 个答案:

答案 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