javascript - AJAX 线程 - 如何等待它完成?

标签 javascript jquery ajax

我想知道如何让我的脚本等待 AJAX 完成:

function urlExists(testUrl){
    var ajaxurl = 'some AJAX URL';
    jQuery.ajax({
        type: "POST",
        url: ajaxurl,
        data: {
                "action": "somefunction",
                "content": testUrl
            },
        global: false,
        success: function(){
            alert('ajax successs');
            return true;
        },
        error: function(){
            return false;
        }
    });
    return false;
}

/* The AJAX function returns TRUE or FALSE 100% alright. */
/* The interesting part begins below. */

if(urlExists(src)){
    alert('test');
}else{ 
    alert('test2');
}

当 AJAX 返回 TRUE(或 FALSE)时,if(urlExists(src)) 总是说 test2...我打赌这是因为它没有等待 AJAX 完成?但这有什么作用呢?为什么会这样?我得到了 test2,不久之后 ajax successs。我需要它来显示 test 消息。谁能给我解释一下?

最佳答案

The AJAX function returns TRUE or FALSE 100% alright.

没有。如最后一行所述,它总是返回 false

how to wait for it to complete?

您不能用“休眠”来“等待”,因为它是一项异步 任务。您将需要使用回调。使用 jQuery 的 Deferreds,它看起来像这样:

function urlExists(testUrl){
    return jQuery.ajax({
        type: "POST",
        url: 'some AJAX URL',
        data: {
                "action": "somefunction",
                "content": testUrl
            },
        global: false,
        success: function(){
            alert('ajax successs');
        }
    });
}
urlExists(src).done(function(){
    alert('test');
}).fail(function(){ 
    alert('test2');
}); // returns the promise immediately, but will alert later on

关于javascript - AJAX 线程 - 如何等待它完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13958825/

相关文章:

javascript - 我可以使用 JavaScript 生成 RSS (XML) 页面吗?

javascript - 检查一个对象是否是谷歌桌面上的一个元素

javascript - 使用 Map 创建频率图 - JavaScript

javascript - 如何通过javascript从模板中获取元素?

javascript - 无法更新 "data-attribute"值

javascript - 如何生成结果 Javascript 嵌套延迟

c# - jquery ajax调用返回值

javascript - AngularJS 不适用于 Paypal

javascript - 尝试将本地 Javascript 文件链接到 HTML 文档,但在浏览器中,我收到“无法加载资源”错误

jQuery 事件绑定(bind)适用于普通链接,但现在适用于带有图像的链接