我正在尝试在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()方法。