我的ajax oop脚本工作正常,但没有回调onreadystatechange函数。这是code =>
function AjaxConstruct(method,file,params){
this.method = method;
this.file = file;
this.params = params;
this.http = false;
}
AjaxConstruct.prototype.ajax = function(){
if (window.XMLHttpRequest){
this.http = new XMLHttpRequest();
} else {
this.http = new ActiveXObject("Microsoft.XMLHTTP");
}
if (this.http){
this.http.open(this.method,this.file,true);
if (this.method==="POST"){
this.http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
}
this.http.send(this.params);
this.http.onreadystatechange = function(){
if (this.http.readyState==4 && this.http.status==200){
alert("yeah");
}
};
}
};
它没有回调onreadystatechange匿名函数,怎么解决?谢谢:))
调用像这样的方法=>
var ajax = new AjaxConstruct("POST","filename","params");
ajax.ajax();
但onreadystatechange没有调用:(
答案 0 :(得分:1)
我认为回调已被调用,但访问this.http.readyState
会引发错误,因为在回调中,this
不会引用您的实例。
查看控制台是否有错误。
只需使用this.readyState
或将XMLHTTPRequest
对象分配给本地变量,然后使用该对象代替this.http
。
详细了解this
。