xhr帖子的未定义返回。我不知道问题出在哪里
var d=new XMLHttpRequest();
var data;
d.open("POST",b,!0);
d.setRequestHeader("Content-type","application/json");
d.onreadystatechange=function(){
if(d.readyState==4){
var data={status:d.status,text:d.responseText};
return data.text; // this return undefined
}
};
d.send(c);
答案 0 :(得分:0)
由于您正在执行异步XMLHttpRequest,因此无法从onreadystatechange
回调中返回值。相反,您必须在该回调中使用结果或调用其他函数并将结果传递给它。从该回调中返回一个值,只需将其返回到XHR引擎的内容中 - 它永远不会进入您的代码。
此外,您需要确保readyState === 4
(这意味着请求已完成)并且您有成功的响应代码,或者您需要处理错误代码。以下是如何:
var d = new XMLHttpRequest();
d.open("POST", url, true);
d.setRequestHeader("Content-type","application/json");
d.onreadystatechange = function(){
// if request has finished
if (this.readyState === 4){
// if request finished successfully
if (this.status === 200) {
// process this.responseText here
} else {
// process this.status error response code here
}
}
}
};
d.send(data);
此外,一个字符变量不会使您的代码更具可读性。强烈建议您对所有变量使用有意义的名称。在部署之前,可以使用最小化器缩短代码,同时保留可读版本以进行编辑和维护。