javascript - 为什么在此函数中返回 jquery AJAX promise 无法提供数据?

标签 javascript jquery ajax jquery-deferred deferred

此 AJAX 适用于 jsfiddle

var a = $.ajax({
    url: "/echo/json/",
    type: "post",
    data: {
        json: JSON.stringify({
            a: true
        })
    },
    dataType: "json"
});

a.done(function (data) {
   console.log(data);
});

当我创建 a 函数并返回 AJAX promise 时,为什么它不起作用?

var a = function () {
    return $.ajax({
        url: "/echo/json/",
        type: "post",
        data: {
            json: JSON.stringify({
                a: true
            })
        },
        dataType: "json"
    });
}

a.done(function (data) {

    console.log(data);

});

这不是正确的语法吗?好吧,显然不是,但是我怎样才能将 AJAX 请求构建到函数中呢? FIDDLE

最佳答案

因为 a 是一个函数,所以你必须调用它:

a().done(function(data) {
    console.log(data);
});

关于javascript - 为什么在此函数中返回 jquery AJAX promise 无法提供数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25375350/

相关文章:

javascript - 如何使用 javascript 或 jquery 激活 Clippy-jquery

javascript - 如果我有一段在多个 html 文件中通用的 HTML,我可以将它放在自己的 .html 文件中吗?

javascript - Rails 6 和 webpack : compile all coffeescript from one directory

javascript - Mouseenter/mouseleave 多个 div

javascript - jQuery each() 在 null 上中断

jquery - 使用 jQuery 检查文本区域中的换行符

javascript - 设置ajax构造的下拉输出的初始值

javascript - jQuery - 左边距减去 div 宽度的一半

ajax - 参数不在ajax请求中发送

使用 Node.js 进行 Ajax 文件上传