返回了JS对象,但响应文本不起作用

JS object returned but responseText doesnt work

本文关键字:响应 文本 不起作用 JS 对象 返回      更新时间:2023-09-26

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

$.post返回一个承诺对象,请尝试使用它。

var d = $.post("/home/status_update");
d.done(function(data) {
    console.log(data);
});
这是我在 AJAX 请求

中发现的最常见的错误之一:许多人没有意识到 AJAX 是 *A* 同步的,你不能指望你的 d 变量得到重视,因为无论 AJAX 请求是否完成,代码都会继续执行

仅当请求-响应往返完成后,才能使用检索到的值。

你要做的是在function(data)实际使用返回的值,因为你保证只有在实际检索到值才会执行它。

其他用户通过绑定 AJAX 请求/响应完成时触发的 done 事件来获取相同的内容。这是以略有不同的方式编码的相同事物。简写是:

var d = $.post("/home/status_update", function(data) {console.log(data);});

请记住,作为一般应用程序体系结构,对于 AJAX 请求,您不能期望使用单个函数,您将定义在每次 AJAX 完成时处理响应的函数。尝试以更"碎片化"的方式思考您的应用程序。