jsfiddle jquery ajax 未按预期返回数据



我正在尝试在jsfiddle上进行jquery ajax调用,但遇到了问题:

var ajax1 = function () {
    return $.ajax({
        type: "post",
        url: "/echo/json/",
        data: {
            name: "thomas!"
        },
        dataType: 'json'
    });
};
var res = ajax1();
console.log(res);

将整个延迟对象打印到控制台。它包括我认为也许是我应该尝试访问的responseText,但我没有得到定义。

console.log(res.responseText);

我之前用 HTML 尝试过一次,一切似乎都可以工作,但由于某种原因 JSON 失败了。

ajax 返回一个 promise 对象,而不是 ajax 请求的结果。您需要注册一个成功回调来获取 ajax 请求返回的值

它应该是

var ajax1 = function () {
    return $.ajax({
        type: "post",
        url: "/echo/json/",
        //also the format for json request is as follows
        data: {
            json: JSON.stringify({
                name: "thomas!"
            })
        },
        dataType: 'json'
    });
};
var res = ajax1();
res.done(function (data) {
    console.log(data)
})

演示:小提琴

你是对的,JQuery 返回一个延迟对象实例。

因此,您应该在对象上调用done()来获取数据:

var res = ajax1();
res.done(function(data) { console.log(data); });

$.ajax() 返回一个 jqHXR 实例(它实现了延迟模式)。当您从函数返回此对象时,您将返回 jqHXR 对象。这实现了传递回调函数的done()方法。

最新更新