我想使用return语句将XMLHttpRequest响应分配给变量,但是得到的结果不确定。我猜想分配正在尝试在响应准备好之前执行。
var x = req('param=val¶m2=val2'); // x results in 'undefined'
function req(request) {
var xhr=new XMLHttpRequest();
xhr.open("post","parser.php");
xhr.responseType="text";
xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
xhr.send(request);
xhr.onreadystatechange=function(){
if(this.readyState==4&&this.status==200) return this.response;};
}
我以前在每次作业中都使用setInterval()
,但是它比我想要的更为冗长:
req('param=val¶m2=val2');
var wait=setInterval(function(){if(php!=null){
x = php;
clearInterval(wait);}
},10);
function req(request) {
var xhr=new XMLHttpRequest();
xhr.open("post","parser.php");
xhr.responseType="text";
xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
xhr.send(request);
xhr.onreadystatechange=function(){
if(this.readyState==4&&this.status==200) php = this.response;};
}