2013-04-13 28 views
0

這是使用JQuery數據表插件有關:數據表AJAX源,但僅本地(DOM風格)過濾

我想用我的服務器端源代碼,但在過濾方面,我希望保留它是'DOM方式',如果你知道我的意思。即不向服務器發起新的XHR請求,而只是處理已經填充的內容。

任何推薦/普遍接受的最佳做法?

+0

能不能請您詳細一點嗎?從上面我猜你想從服務器端源首次填充dataTable?另外你的服務器端來源是什麼? – dev

+0

Hi @vietech,我的服務器端源代碼是一個典型的PHP腳本,它可以將DataTables需要的任何內容填充到其行中。是的,我的問題是,我只想要一個查詢到服務器,可能使用'bDeferRender',主要關心的是'搜索'框中的任何變化應該**不**激發更多的查詢,但只過濾任何現成的桌子。 – Lim

回答

0

這可能不是您嘗試實現的正確方法,但是當我使用dataTables時,我開始使用CSV文件向DOM填充表,一旦頁面首先加載然後加載當完成初始化dataTable時。所以只有一個請求。我現在正在做同樣的事情,但使用Google Spreadsheet而不是CSV文件,這很好用!

我會指出我的表格非常基本,並不是很大。

但我會通過使用AJAX來首先檢索您的PHP頁面中的數據,創建一個HTML表,然後初始化dataTable。

喜歡的東西.....

$.ajax({ 
    type:'GET', 
    url:'../yourdatasource.php', 
    success: function(data){ 
     // Your code to create the HTML table 
     $('#yourTable').dataTable(); 
    } 
}); 

就像我說的有可能是這樣做的更好的方法,但我喜歡讓事情simples。

+0

這正是我開始做的!開始的罰款,直到我想添加一些翻頁回調和其他功能,並認爲如果DataTables已經支持我本來想做的事情,我可能會重新發明車輪...只是想知道是否有更好的方法大聲笑。謝謝@vietech。 – Lim

0

我想過這個,因爲我需要這個。但幾個小時後,我找到解決辦法。 Datatables概念有兩個方面。左側是DOM處理,右側是服務器端。那兩個人之間的區別...

DOM處理:
- 負載源數據
- 與源數據的工作

服務器端處理
- 負載源數據
- 所有相互作用被稱爲XHR請求。
(來源:Enhancing-HTML-tables-using-a-JQuery-DataTables-pl「在這種模式下,該插件只處理與用戶的交互,而且全部過程都在服務器端完成。」)

所以你不能這兩個方面,因爲DOM與工作結合在一起已加載的數據和服務器端的數據(數據庫)直接運行。如果你想在服務器端處理中啓用這個功能,我認爲這是個壞主意,因爲在DOM中是一個「過濾」,而在服務器端是一個「搜索」。如果他們之間最大的區別。如果用戶想要「過濾」數據,則無法確保正確的結果。

如果你有很多記錄,你應該使用服務器端。
否則加載數據並使用DOM工作。

並試試這個..
http://datatables.net/ref#bServerSide

我希望這可以幫助您爲我

有一個愉快的一天

編輯

如果要加載從遠程服務器,並已通過加載式過濾器的數據數據DOM過濾器,您可以使用「sAjaxSource」:「xhr.php」來獲取加載數據,但是您不指定/啓用bServerSide。它工作正常。

http://datatables.net/ref#sAjaxSource

+0

是的,經過一段時間,我認爲它可能不是數據表設計的一部分,可以做我想做的事情。事實上,我最終訴諸於@vletech回答大聲笑 – Lim

+0

對。這是我想告訴你的。使用這種組合是不好的主意。但是你檢查了我的鏈接?可能比@vletech的答案要清楚得多。 – daremachine