首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript函数不等待ajax执行

javascript函数不等待ajax执行
EN

Stack Overflow用户
提问于 2014-02-20 17:45:23
回答 3查看 675关注 0票数 1

我有我的javascript函数不等待ajax执行,立即退出,没有等待执行,严重的问题是什么,我的代码如下:

我在最后发出了一个警告:正是为了阻止它。当警报显示时,我等待了一点来自服务器的结果,从服务器返回的结果是result not null。当我禁用警报时,结果未定义。

代码语言:javascript
复制
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;
}
EN

回答 3

Stack Overflow用户

发布于 2014-02-20 17:49:13

因为ajax是异步的。它不会等待成功事件发生。如果您想这样做,请将

代码语言:javascript
复制
async:false

在代码中

票数 0
EN

Stack Overflow用户

发布于 2014-02-20 17:53:11

在ajax中添加async:false

代码语言:javascript
复制
 $.ajax({
        type: 'POST',
        async:false, 
        url: '@Url.Content("~/CourbesNiveaux/getAllBathyms")',
票数 0
EN

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21903920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档