2013-12-20 42 views
1

我試圖讓最簡單的AJAX請求成爲可能,出於某種原因(意外)出現在IE中,但不在Chrome中?Chrome中的AJAX請求responseText爲空?

下面是代碼:

var x = new XMLHttpRequest(); 
x.open("GET","style.php",true); 
x.send(); 
alert(x.responseText); 

最後一行僅僅使空「警報」窗口彈出。

的PHP代碼:

<?php 
    header("Content-Type: text/plain"); 
    echo "HELLO"; ?> 

有人建議我把text/plain的報頭中的代碼之前,沒有工作。 Chrome中的JS控制檯顯示收到的狀態爲200和800B,因此腳本收到響應,但沒有看到它?

非常感謝您提前

+0

因爲它是異步! – epascarello

+1

複製警報的代碼並將其粘貼到下一行,然後重試。 \ *頭腦風暴\ *'警報(x.responseText);警報(x.responseText);' –

+0

@KevinB唯一的原因是該請求很快完成,所以當你完成點擊「確定「到第一個提醒,請求已完成,並且現在可以使用responseText。但是,您並不希望代碼依賴於方便的時間。 – Niall

回答

2

XMLHttpRequest是一個異步函數。

你應該這樣做:

var x = new XMLHttpRequest(); 
x.open("GET","style.php",true); 
x.send(); 
x.onreadystatechange = function(response) { 
alert (response.responseText); 
}; 
+1

謝謝,但我得到了「未定義」的迴應。無法弄清楚原因。 – user3104270

+0

@ user3104270我有同樣的問題,不知道如何解決:( – Muhammed

+0

差不多,但不完全onreadystatechange處理程序將被調用多次readyState更改 - 只有當this.readyState == 4是請求完成。此外,處理程序的第一個參數不是響應,而是事件 - 您應該引用「this」,它將是XMLHttpRequest實例本身。將它們放在一起,您的處理函數應該是' function(){if(this.readyState == 4){alert(this.responseText);}}' – Niall