2016-02-17 88 views
1
<!--index.html--> 
<script> 
    function work() 
    { 
    var ajax = new XMLHttpRequest(); 
    ajax.open("POST", "doWork.php"); 
    ajax.send("doIt");   
    } 
</script> 
<button onClick="work();" /> 

如何保持從服務器獲取響應? (PHP,JS,HTML)

<!--doWork.php--> 
<?php 
    echo "Loading..."; 
    hardWork1(); // or maybe sleep(10); 
    echo "Completed number xxx"; 
?> 

您好,我想從服務器序列得到兩個消息以上。

像上面的代碼一樣,比如「Loading ...」在「Completed Number xxx」之前。

我必須在第一個AJAX的回調中添加另一個AJAX發送嗎?

+2

WebSockets的將是專業的解決方案,除此之外,繼續做AJAX請求每秒左右,只寫一個每個請求 –

+0

這是偉大的,但看起來太專業了狀態更新。但我會繼續看。 – user3524577

回答

0

你想要這樣的東西嗎?

<div id="content"> 
Loading... 
</div> 
… 
if(ajax.readyState == 4 && ajax.status == 200){ 
    document.getElementById().innerHTML = 'Completed Number ' + ajax.responseText; 
} 
… 
+0

簡單來說,但是如果狀態更好。我必須再發送一次嗎?狀態保持改變,完成一次後。比如級別1 ... 2 ... 3 ... 4 .. – user3524577

+0

您可以將您的「狀態碼」置於響應的開始位置,然後從響應中獲得: 'var response = ajax。 responseText的; if(response.charAt(0))==='5' alert('Error 5!'); response.substr(1); //刪除第一個字符 –

+0

我認爲你必須做更多的請求才能得到回覆... –