2011-05-10 18 views
0

我正在創建一個輸出1000-3000條記錄列表的頁面。目前的流程是:如何創建適用於無限滾動加載行爲的方法查詢

  1. 用戶加載頁面
  2. jQuery的命中服務器中的所有記錄,並將其注入到該頁面。

問題在於,對於某些用戶來說,這些記錄可能需要3秒以上才能返回,這是一種可怕的用戶體驗。

我想要做的是: 1.用戶加載頁面 2. jQuery命中服務器並獲得至多100條記錄。然後一直循環直到裝載的記錄等於最大記錄爲止。

這裏的想法是用戶快速查看記錄,並不認爲有什麼破碎。

所以它不是一個真正的無限滾動,因爲我不關心滾動位置,但它看起來像一個類似的流程。

如何在jQuery中我可以在循環中的服務器?以及如何在軌道上查詢考慮到偏移和限制?

謝謝

回答

0

您可以簡單地向服務器反覆查詢一批數據。

有許多API可以實現。像:

client: GET request /url/ 
server: { 
    data: [ ... ] 
    rest: resturl 
} 
client GET request resturl 
repeat. 

或者你可以讓客戶端的參數傳遞說你想要的資源1-100,然後101-200和在循環中做到這一點。

在這期間,因爲它涉及你將會呈現數據。

你的服務器或者需要讓你在參數傳遞說你想記錄我到I + N。

或者您的服務器需要獲取所有數據。將它存儲在某個地方,然後返回一大塊數據以及某種唯一的id或url來請求另一塊數據並重復此操作。

// pseudo jquery code 
function next(data) { 
    render(data.records); 
    $.when(getData(data.uniqueId)).then(next); 
} 

function getData(id) { 
    return $.ajax({ 
     type: "GET", 
     url: ... 
     data { 
      // when id is undefined get server to load all data 
      // when id is defined get server to send subset of data stored @ id. 
      id: id 
     }, 
     ... 
    }); 
} 

$.when(getData()).then(next); 
+0

真的嗎?不確定。 – AnApprentice 2011-05-10 00:10:54

+0

@AnApprentice調整了合適的答案。 – Raynos 2011-05-10 00:22:21

+0

謝謝! getData的時候很有趣。現在讓我試試看... – AnApprentice 2011-05-10 00:25:30

相關問題