为什么在这个函数中返回jquery AJAX promise不能给我数据呢?

时间:2014-08-19 03:40:40

标签: 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承诺时,为什么它不会起作用?

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

1 个答案:

答案 0 :(得分:5)

由于a是一个函数,你必须调用它:

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