ajax onreadystatechange函数

时间:2012-05-30 09:42:07

标签: javascript ajax

我的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没有调用:(

1 个答案:

答案 0 :(得分:1)

我认为回调已被调用,但访问this.http.readyState会引发错误,因为在回调中,this不会引用您的实例。

查看控制台是否有错误。

只需使用this.readyState或将XMLHTTPRequest对象分配给本地变量,然后使用该对象代替this.http

详细了解this