2012-07-06 91 views
0

我想了解別人的代碼來修復一些錯誤。有一次調用xmlhttp = new XMLHttpRequest();是在JavaScript函數中創建的,並且responseText屬性的值已經設置(在調用之後立即用console.log(xmlhttp)進行檢查)。該值是有意義的(來自MySQL DB的一些值),但它們錯了(錯誤的列),我想改變它們。XMLHttpRequest responseText初始值

在實例化對象後它如何具有值?我應該尋找什麼樣的電話來找到這些值的設置?

P.D .:我對JS很新,我在樹林裏有點迷路。

編輯:

我能夠追蹤行爲進一步:

todbajax=ajaxObject(); // here is the xmlhttp = new XMLHttpRequest(); 
todbajax.open("POST", "install/dataset.php", true); 
todbajax.onreadystatechange=function() { 
    console.log("1", todbajax.responseText); 
    if (todbajax.readyState==4) { 
     console.log("2", todbajax.responseText); 
     . 
     . 
     . 
    } 
} 

控制檯輸出如下:

1 
1  ["view","test2","test","asdfadsf"] 
2  ["view","test2","test","asdfadsf"] 
+0

請提供一些更多的上下文(如在更多的代碼中)。我懷疑有一個異步函數回調,你誤解爲「在通話之後」。 – 2012-07-06 07:56:27

+0

我解決了它。似乎console.log(request)等待所有內容結束,然後打印,而console.log(request.responseText)立即打印。該對象正在填充其他代碼(在dataset.php文件中)。 – QOI 2012-07-09 07:25:44

回答

0

什麼是你從responseText的獲取值?當我執行下面的代碼行時,你會得到一個空字符串。所以在實例化和打印價值之間必須發生。

console.log(new XMLHttpRequest().responseText); // => "" 
+0

如果我做 'console.log(xmlhttp = new XMLHttpRequest()。responseText);'我得到一個空字符串。 但如果我做'console.log(xmlhttp = new XMLHttpRequest());'responseText字段有數據。 – QOI 2012-07-06 08:06:37

+0

默認情況下返回一個空字符串。 console.log((xmlhttp = new XMLHttpRequest())。responseText); – 2012-07-06 08:50:49

+0

@Yeyo,我自己就是這樣做的,裏面沒有數據。所以無論發生什麼,它都與你的代碼有關。你的ajaxObject函數的代碼是什麼? – Daedalus 2012-07-07 06:50:45