嗨,我不確定如何描述這個問題,所以我希望代碼將解釋我的問題。由ajax函數調用的php腳本(phppage.php)除了echo hello world之外沒有任何其他功能。Javascript AJAX類問題
當警報('a')行留在使用ajax函數的調用函數中時,代碼將按預期工作,最後一行彈出消息「hello world」。然而,alert('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