0

完全に機能しているが、onreadystatechange関数をコールバックしないajaxoopスクリプトを使用しました。ここにコードがあります=>

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は:(を呼び出しません

4

1 に答える 1

1

コールバックが呼び出されたと思いますが、コールバック内ではインスタンスを参照していないthis.http.readyStateため、アクセスするとエラーがスローされます。this

コンソールでエラーを確認してください。

オブジェクトを使用するthis.readyStateかローカル変数に割り当てて、のXMLHTTPRequest代わりにそれを使用してthis.httpください。

詳細については、をご覧くださいthis

于 2012-05-30T10:05:17.550 に答える