Javascript JSFIDLE jquery ajax未按预期返回数据

Javascript JSFIDLE jquery ajax未按预期返回数据,javascript,jquery,ajax,jsfiddle,jquery-deferred,Javascript,Jquery,Ajax,Jsfiddle,Jquery Deferred,我试图在JSFIDLE上调用jquery ajax,但遇到了一个问题: var ajax1 = function () { return $.ajax({ type: "post", url: "/echo/json/", data: { name: "thomas!" }, dataType: 'json' }); }; var res = ajax1(); console

我试图在JSFIDLE上调用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)
})

演示:

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); });

返回一个实例(实现延迟模式)。当您从函数返回此值时,您将返回jqHXR对象。这实现了一个done()方法,该方法通过回调函数传递。

如果您是正确的,JQuery将返回一个延迟对象实例

因此,应该对对象调用done()以获取数据:

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

返回一个实例(实现延迟模式)。当您从函数返回此值时,您将返回jqHXR对象。这实现了一个done()方法,该方法通过回调函数传递。

谢谢。不相关的问题,但你可能知道。有什么办法可以让我推迟处理吗。我想我过去可以将它包含在json对象中。但是它不起作用
data:{json:json.stringify({name:“thomas!”,delay:3})}
@thomassee。。。。延迟应该传递给
data
而不是
json
谢谢。不相关的问题,但你可能知道。有什么办法可以让我推迟处理吗。我想我过去可以将它包含在json对象中。但是它不起作用
data:{json:json.stringify({name:“thomas!”,delay:3})}
@thomassee。。。。延迟应该传递给
data
而不是
json
so
return$.ajax({…})您真正返回的是什么?是将延迟对象简单地内置到$.ajax中,这样当jQuery在它前面看到return时,它知道返回延迟对象,还是延迟对象中的$.ajax对象本身。我不懂语法。所以
return$.ajax({…})您真正返回的是什么?是将延迟对象简单地内置到$.ajax中,这样当jQuery在它前面看到return时,它知道返回延迟对象,还是延迟对象中的$.ajax对象本身。我不懂语法。