我查找過類似的主題,但似乎沒有解決我目前遇到的問題。 我有此JavaScript:AJAX請求PHP腳本循環
<script type="text/javascript">
http = new XMLHttpRequest();
function fetch()
{
http.open("GET", "script.php", true);
http.onreadystatechange = useHttpResponse;
http.send(null);
}
function useHttpResponse()
{
if(http.readyState == 4)
{
var textout = http.responseText;
document.getElementById("ajax").innerHTML=textout;
}
}
</script>
非常基本的東西。 PHP腳本是一個簡單的循環:
for($i = 0; $i < 30000; $i++)
{
echo 'Hello<br />';
}
這很好。我按下一個具有onClick="javascript:fetch()"
的按鈕,它會請求PHP腳本並在id爲「ajax」的div中輸出30.000行「Hello」。
問題是它必須等到運行了所有30.000循環。我希望它在EACH循環後通過AJAX請求輸出響應,以便在腳本運行時擴展列表類型。這可能嗎?我將如何做到這一點?就像我說的,我已經搜索過,但空着。我意識到這是嚴格的美容效果,但我會很樂意爲任何建議!
謝謝
這是行不通的。 '4'的'http.readystate'是數據傳輸完成的時候。 – Mike
另外,你應該提到,如果啓用gzip壓縮,調用flush()將不起作用。 – Mike
這工作奇蹟!我之前曾嘗試過刷新方法,但在腳本完成所有循環之前什麼都沒有發生。狀態設置爲3而不是4,現在它將輸出每個循環中的所有內容。 顯然,只有那個for-loop,瀏覽器凍結了,因爲發送了所有更新,但是使用我的應用程序腳本沒有更少的行數來打印(但需要更多時間運行),它運行得非常好。感謝您的快速回復! – Tanax