因此,我发布了对仅返回字符串的方法的调用,并且我的发布请求在 responseText 字段中返回带有字符串的对象,但d.responseText
返回“未定义”。有谁知道为什么?我以为是因为它是 AJAX 但为什么 var d 具有正确的值?
var d = $.post("/home/status_update", function(data) {return data});
console.log(d);
console.log(d.responseText);
因此,我发布了对仅返回字符串的方法的调用,并且我的发布请求在 responseText 字段中返回带有字符串的对象,但d.responseText
返回“未定义”。有谁知道为什么?我以为是因为它是 AJAX 但为什么 var d 具有正确的值?
var d = $.post("/home/status_update", function(data) {return data});
console.log(d);
console.log(d.responseText);
$.post
返回一个 promise 对象,尝试使用它。
var d = $.post("/home/status_update");
d.done(function(data) {
console.log(data);
});
这是我在 AJAX 请求中发现的最常见的错误之一:许多人没有意识到 AJAX 是 *A* 同步的,你不能指望你的d
变量会被重视,因为代码会继续执行而不管完成 AJAX 请求。
只有在请求-响应往返完成后,您才能使用检索到的值。
您需要做的是实际使用内部的返回值function(data)
,因为您保证它只会在实际检索到该值之后执行。
另一个用户通过绑定事件获得相同的东西,该done
事件在 AJAX 请求/响应完成时触发。这是以稍微不同的方式编码的同一件事。简写是:
var d = $.post("/home/status_update", function(data) {console.log(data);});
请记住,作为一个通用的应用程序架构,对于 AJAX 请求,您不能期望使用单个函数,您将定义在每次 AJAX 完成时操纵您的响应的函数。尝试以更“碎片化”的方式思考您的应用程序。