我寫了下面簡單的JavaScript代碼XmlHttpResponse.responseText何時會被來自服務器的響應填充?
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head> <title>ajax</title> </head>
<body>
<script type="text/javascript">
var xhr = new XMLHttpRequest();
var url = "http://localhost/javascript/test.php";
xhr.open("GET", url);
alert(xhr);
xhr.send(null);
xhr.onreadystatechange = function() {alert("change");}
alert(xhr.responseText);
</script>
</body>
</html>
結果顯示xhr.responseText是空的。 但下面的JavaScript代碼工作正常。爲什麼?
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><title>ajax</title></head>
<body>
<script type="text/javascript">
var xhr = new XMLHttpRequest();
var url = "http://localhost/javascript/test.php";
xhr.open("GET", url);
xhr.send(null);
xhr.onreadystatechange =
function() {
if (xhr.readyState == 4) alert(xhr.responseText);
};
</script>
</body>
</html>
以下是簡單的PHP代碼:test.php的
<?php
echo date("F j, Y, H:i:s");
我將** function(){alert(「change」);} **添加到onreadystatechange事件中,所以當readystate更改時,會彈出一個警告窗口,然後單擊OK,然後再次準備好更改,另一個警報窗口彈出,我再次點擊它。點擊4次後,readystate == 4,然後我應該得到responseText。 – PeopleMoutainPeopleSea 2011-03-08 02:47:39
完全沒有!因爲,在附加該函數之後立即執行該行: alert(xhr.resonseText); 並且永遠不會再回到那個位置,如果在點擊四次之後,您希望執行該行,則必須將它放在附加到onreadystatechanged的函數的{}之間。 一切順利! – r0nny1l 2011-03-08 06:27:52