2010-07-02 60 views
2

我現在處於設計階段,想知道如何每5秒更新一次表格。每5秒更新一次表格數據

我的表格將顯示從我的模型返回的只讀數據。

通常情況下,我的觀點只會有<table></table>HTML,然後是一個foreach循環來寫出數據。

但是,因爲我想每5秒刷新一次整個表,我不確定如何實現它。

我知道有javascript setinterval函數,但我也不確定該怎麼做。會是這樣的嗎?

如/

function getdata() 
{ 
    $.getJSON("/mycontroller/mymethod"), 

       function(data) { 

       $.each(data, function(i, item) { 
        var row = { item.ID, item.Date, 
         item.Title 
        }; 
       $(#table).tableInsertRows(row); 
       }); 

      }); 
} 
    setInterval("getdata", 5000); 
+0

表有多大? – R0MANARMY 2010-07-02 15:40:41

+0

好點!它可能包含足夠的分頁控制,例如/ << <上一頁下一頁> >> – Jon 2010-07-02 15:43:55

+0

那麼多的數據是否真的每5秒更改一次,或者只有一部分會發生變化? – R0MANARMY 2010-07-02 15:54:34

回答

1

這可能是最簡單的辦法你mymethod行動渲染視圖,而不是返回JSON的。然後,您可以將div的innerHTML設置爲ajax響應。

否則你的方法將工作,但你顯然必須先刪除現有的錶行:

$('#table').tableRemoveRows({from:0, length:???}); 

編輯

重新閱讀您的問題,這聽起來像你問更多約setInterval比實際創建表。你需要不斷重新註冊回調,所以像這樣:

function getdata() 
{ 
    $.getJSON("/mycontroller/mymethod"), function(data) { 

     $.each(data, function(i, item) { 
       var row = { item.ID, item.Date, 
        item.Title 
       }; 
      $(#table).tableInsertRows(row); 
     }); 

     setInterval(getdata, 5000); 

    }); 
} 
setInterval(getdata, 5000); 
+0

當你返回一個局部視圖時,只有原始的HTML可以看到AJAX的成功,使你能夠設置innerHTML? – Jon 2010-07-02 16:21:34

+0

我在問這兩個問題。我認爲我得到了setInterval,但只是不確定獲取新數據並抽出到瀏覽器的最佳方式。 – Jon 2010-07-02 16:26:02

+0

@Jon在你的'mymethod'動作的服務器上返回View()'。在客戶端上,您可以使用'$ .get'而不是'$ .getJSON',然後只抓取responseText。 – 2010-07-02 16:27:41