2010-10-27 60 views
0

我有一個帶有div的頁面,div內的元素會定期從服務器端更新。例如,我有一個進度條。目前,我正在使用setInterval來執行jQuery.load來定期刷新頁面上的div(每3秒)。我想知道是否可以使用基於事件的方法而不是基於計時器來實現此目的。例如,每當進程發生變化時,我都可以觸發服務器事件,然後我可以增加頁面上進度條的寬度(並更改其他元素)。問題是如何告訴jQuery在發生這種情況時執行加載?有沒有一個jQuery的onchange事件或somethign監視頁面更改?當存在服務器端事件時告訴jQuery重新加載頁面

回答

2

這根本不可能,因爲服務器&客戶端之間的基礎通信協議(HTTP)是基於請求響應的。所以服務器不可能通知沒有客戶端請求的客戶端。簡而言之,民意調查是一條路。

+0

沒有,投票是不是要走的路。 – jgauffin 2010-10-27 05:38:34

4

輪詢可以完成,但有一個更好的方法:彗星服務器。基本上,HTTP服務器允許長時間運行的請求,這意味着它不發送響應,除非事情已經發生或超時即將在踢

閱讀有關彗星的位置:http://en.wikipedia.org/wiki/Comet_(programming))

彗星插件jQuery的:http://plugins.jquery.com/project/Comet

更多的技術文章:http://ajaxpatterns.org/HTTP_Streaming

+0

你顯然是對的! – VinayC 2010-10-27 05:44:55

相關問題