2012-01-02 25 views
0

我試圖使用jQuery做一個稍微複雜的頁面刷新。使用元刷新,如果頁面加載失敗一次,則不會再次加載。我正在嘗試製作一些會反覆嘗試加載的內容 - 如果它未能加載一次,它會在下一次再次嘗試,以便如果最後一次加載成功,我會看到新版本的頁面,無論是否存在是干預的錯誤。如何解決我的JavaScript頁面刷新

我目前的代碼是:

<script language="JavaScript" type="text/javascript" src="/include/jquery.js"> 
</script> 
<script language="JavaScript"> 
    var delay=5*1000; 
    function load(){ 
     setTimeout(load, delay); 
     jQuery("#content").load("calendar_internal.cgi?days=40", function(){ 
      jQuery("#preload").hide("slow"); 
     }); 
     delay = 15*60*1000; 
    } 
    jQuery("#content").load("calendar_internal.cgi?days=40", load); 
</script> 

據我所知,這是作爲一個空操作運行。它不刷新。

我怎樣才能得到,因此刷新,但一個壞的刷新並不意味着我必須重新加載,如果我想看到的網頁,在這一切至少在基層工作?

- 編輯 -

我有什麼,現在顯然是工作(後光測試):

<script language="JavaScript"> 
var placeholder = jQuery('<div></div>'); 
function load(){ 
    setTimeout(load, 15*60*1000); 
    placeholder.load("logistic_ajax.cgi", function(){ 
     if (placeholder.html()) 
      jQuery('#content').html(placeholder.html()); 
    }) 
} 
load(); 
</script> 
+1

你爲什麼調用setTimeout的負載功能的加載功能的第一線? – Abbas 2012-01-02 21:14:09

+0

爲了穩定。我們的想法是,首先設置下一次運行,然後嘗試網絡加載,以便在網絡加載失敗的情況下,丟失的嘗試次數不會超過一次。 – JonathanHayward 2012-01-04 00:05:03

+0

也許我沒有看到這裏的邏輯,但這不是一個無限的遞歸調用?加載函數中的第一行調用setTimeout,它調用加載函數等等。 – Abbas 2012-01-04 00:10:38

回答

1
var $placeHolder = $('<div />'); 
$placeHolder.load(yourURL,function() { 
    if ($placeHolder.html()) { 
     $("#content").html($placeHolder.html()); 
    } 
}); 

或類似的東西。這樣你就不會做所有或沒有做的事情。如果HTML返回的東西混亂了,你可以檢查你的「if」條件。不確定回覆的細節,因此您需要自行散列或者讓我知道更多細節。

乾杯。

+0

嗯,它似乎還沒有加載頁面;我得到一個空白頁面,加載區域外的骨架。 – JonathanHayward 2012-01-08 23:33:12

+0

@JonathanHayward你可以在這裏看到真人版 - > http://www.kitgui.com/docs查看源代碼,看看JavaScript中聲明,其在/ JS /文檔/ JS我相信。有什麼你在做什麼,我不知道如服務器錯誤?選擇器錯誤?等等等等,所以很多事情可能會出錯。 – 2012-01-09 00:29:02