2010-12-08 78 views
1

我正在嘗試改進定期更新的JSP頁面中的容錯功能。超時用於跟蹤提交頁面的時間。如何使用故障轉移實現定期頁面刷新

問題是通信定期失敗這給我們留下了一個破碎/缺頁當通信再次啓動並運行不會刷新。

下面的代碼是當前的實現。

function startTimer(buttonid) { 
    var startstring = 'myTimer("' + buttonid + '")'; 
    window.setTimeout(startstring,15000); 
} 

function myTimer(buttonid) { 
    window.document.forms[0].submit(); 
} 

startTimer()在頁面的onload事件中被調用。

<body onload="startTimer('blurp'); 

最佳解決方案是在通信中斷時優雅地降級的頁面。在這種情況下,它會發出一條錯誤消息,並在設定的時間段後再次嘗試刷新。

我是在原型看着PeriodicalUpdater的方式來解決這個問題。

+0

爲什麼不製作使用JavaScript一個異步POST請求?這樣可以很容易地降低優雅。 – Myth 2010-12-08 12:37:46

回答

1

如何使用僞分區來存儲ajax請求的結果,當您得到響應然後更新真正的div時,當您遇到通信錯誤時比不做任何事情或向客戶端發出數據格老

new Ajax.PeriodicalUpdater($('fakeUpdateDiv'), 
        url, { 
        frequency : 30, 
        method : 'get', 
        parameters : { 
        }, 
       onSuccess : function(transport) { 
        $('realUpdateDiv').update(transport.responseText); 
       }, 
       onFailure : function(transport) { 
           //do something 
       } 
      }); 

PS:在fakeUpdateDiv設置爲display:none

+0

這是解決方案的胚胎。爲了讓它按照計劃工作,我添加了readyState == 4和status == 200的檢查。 – 2011-01-17 07:24:50