JS对象返回但是responseText不起作用

时间:2012-06-21 20:25:09

标签: javascript jquery ajax

所以我发布了一个只返回一个字符串的方法的调用,我的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);

2 个答案:

答案 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完成时处理响应的函数。 尝试以更“分散”的方式思考您的应用程序。