所以我发布了一个只返回一个字符串的方法的调用,我的post请求返回一个在responseText字段中带有字符串的对象,但d.responseText
返回“undefined”。
谁知道为什么?我认为这是因为它是AJAX,但为什么var d具有正确的值?
var d = $.post("/home/status_update", function(data) {return data});
console.log(d);
console.log(d.responseText);
答案 0 :(得分:5)
$.post
返回一个promise对象,尝试使用它。
var d = $.post("/home/status_update");
d.done(function(data) {
console.log(data);
});
答案 1 :(得分:4)
这是我在AJAX请求中发现的最常见错误之一:很多人都没有意识到AJAX是* A *同步,你不能指望你的d
变量得到重视,因为代码继续执行,无论AJAX请求是否完成。
完成请求 - 响应往返后,您可以使用检索到的值 。
你需要做的是实际使用返回值在 function(data)
内,因为你可以保证它只会被执行在之后实际检索到该值。
另一个用户通过绑定done
事件获得相同的事情,该事件在完成AJAX请求/响应时触发。它的编码方式略有不同。
简写是:
var d = $.post("/home/status_update", function(data) {console.log(data);});
请记住,作为一般应用程序体系结构,对于AJAX请求,您不能指望使用单个函数,您将定义将在每次AJAX完成时处理响应的函数。 尝试以更“分散”的方式思考您的应用程序。