こんにちは私はこの問題を説明する方法が正確ではないので、コードが私の問題を説明することを望んでいます。 ajax関数によって呼び出されるphpスクリプト(phppage.php)は、hello worldをエコーする以外に何もしません。Javascript AJAXクラスの問題
ajax関数でリコール関数にアラート( 'a')行が残っていると、コードは正常に動作し、最後の行が「hello world」というメッセージをポップアップします。ただし、アラート( 'a')行はコメントアウトされていますが、最後の行には「hello world」は表示されませんが、コンストラクタ関数で設定されている値の13になります。
私は、Firefox 3.6.18
上の任意の助けを、これをしようとしているは感謝していただければ幸いです。
function A() {
this.b = 13;
function finish(context,response) {
context.b = response;
}
ajax(finish,this);
}
A.prototype = {
constructor: A
}
function ajax(callback,context) {
var http = new XMLHttpRequest();
var url = "phppage.php";
http.open("GET", url, true);
http.onreadystatechange = recall;
function recall() {
alert('a');
if(http.readyState == 4 && http.status == 200) {
callback(context,http.responseText);
}
}
http.send(null);
}
var d = new A();
alert(d.b);
ちょうどクロームでこれをテストし、それがない:
はしようとする場合がありますアラート( 'a')が存在するかどうかに関係なく機能します。 – Dom
私はここで何が起こっているのか理解していると思います。最後の行の警告(d.b)は、ajax呼び出しがオブジェクトプロパティを返して調整する前に実行されています。 – Dom