一個DIV有一個div:我如何動態內容加載到使用JQuery
<div id="content"></div>
,並加載頁面時我稱之爲。這個負載需要大約10分鐘才能完成,並且在執行期間,它的PHP文件會返回一些信息,告訴執行狀態,如Linux加載。我想要動態地將這個信息放在div #content
內,但只在執行結束時才放入。有人可以幫我做這個嗎?
的電話:
$("#content").load("/admin/ajax/analyse.php");
一個DIV有一個div:我如何動態內容加載到使用JQuery
<div id="content"></div>
,並加載頁面時我稱之爲。這個負載需要大約10分鐘才能完成,並且在執行期間,它的PHP文件會返回一些信息,告訴執行狀態,如Linux加載。我想要動態地將這個信息放在div #content
內,但只在執行結束時才放入。有人可以幫我做這個嗎?
的電話:
$("#content").load("/admin/ajax/analyse.php");
jQuery的ajax接口不提供獲取響應進度更新的方法(儘管它聲稱是瀏覽器的本機對象的超集)。 Apparantly,such a use case is inconceivable to the jQuery developers:但是提供
沒有
onreadystatechange
機制,因爲success
,error
,complete
和statusCode
覆蓋所有可以想象的需求。
通過直接使用一個XMLHttpRequest
,您可以讀取一個onreadystatechange
事件處理程序的響應的當前進度:
var xhr = new XMLHttpRequest();
xhr.open("GET", "/admin/ajax/analyse.php", true);
xhr.onreadystatechange = function receiveUpdate(e) {
$("#content").html(this.responseText);
}
xhr.send();
這在大多數的瀏覽器包括IE 10,Chrome瀏覽器的最新版本,和Firefox。
演示:
部分工作,大約4分鐘後停止接收有關執行狀態的信息。你知道這是什麼嗎? –
@MarcioSimao - 適用於我:http://jumpingfishes.com/progresstest2.htm。它可能是你的服務器?如果長時間沒有從您的服務器發送任何內容,則在此期間您將不會收到任何更新。 – gilly3
非常感謝!我將分析正在發生的事情,也許可以是服務器配置。無論如何,非常感謝! –
有一對夫婦的方式來解決這個問題,但他們都將需要服務器端更改。一個解決方案(我認爲最符合你想象這個工作的方式)是long polling。
這只是一個想法,你就必須衝出......
在服務器上,
在服務器上也:
在客戶端,
這應該適合你。
當粘貼相同的網址到瀏覽器窗口,它需要10分鐘? –
@Diodeus,是的,它有點沉重 –
然後在客戶端沒有什麼可以解決這個問題。您需要重新考慮服務器端代碼的工作方式。 –