javascript - 如何等待AJAX​​请求的结果?

标签 javascript jquery ajax

我有一个ajax请求,我需要等待响应返回。我确信我必须使用 Promise,但我真的很害怕 Promise,而且我永远无法理解它。它有多个名为 .then().resolved().reject().catch() 等这让我很困惑。

无论如何我都必须使用它。所以这是我的代码,它不起作用:

Promise(function (resolve, reject) {
    var req = $.ajax({
        url: path,
        type: 'GET',
        data: {"name": value },

        beforeSend: function () {
            if (req != null) {
                req.abort();
            }
        },
        success: function (url) {
            resolve(url);
        },

        error: function (jqXHR, textStatus, errorThrown) {
            reject(textStatus);

        },

        timeout: 20000

    });
});

据我所知,会发生ajax调用,因为当我将console.log(url)放在success block 中时,它也会打印url并且一切都很好。但我不知道如何返回?我的意思是 resolve() 如何返回某些内容?我到底什么时候应该使用 .then()

最佳答案

顺便说一句,$.ajax 返回实现 Promise 接口(interface)的 jqXHR 对象,为它们提供 Promise 的所有属性、方法和行为。 所以你的代码可以是这样的

function onResolve () { alert( "$.ajax succeeded" ); }
function onReject () { alert( "$.ajax failed" ); }

// Promise syntax style
$.ajax({ 
    url: path,
    type: 'GET',
    data: {"name": "value"}
}).then(onResolve, onReject);

// or equivalent jQuery syntax style
$.ajax({
    url: path,
    type: 'GET',
    data: {"name": "value"},
    success: onResolve, 
    error: onReject
});

关于javascript - 如何等待AJAX​​请求的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47961754/

相关文章:

javascript - 菜单动画意外延迟

php - SEO 友好的 ajax 驱动的网站

javascript - 无法使用 Node 检查器进行调试 - 出了什么问题?

javascript - "sortItem"计算属性中的意外副作用

javascript - 如何隐藏元素,然后在单击包含它们的 DIV 时显示它们

javascript - 关于将元素保存到 DOM 和选项卡的 jQuery 问题

javascript - Jquery ajax将变量发布到php

Javascript-Firefox 中 ajax 请求 $.getJSON 中的 XML 语法错误

javascript - 如何在 jQuery 中修改 html 后注册点击事件

javascript - 如何将计时信息直接设置到DOM中?