2011-11-03 59 views
0

我使用jQuery的AJAX調用數據的HTML返回到使用Datatables jquery插件不支持注入?

$('table #table01').html(data); 

表的空標籤<table id=table01></table>呈現並正確填寫數據,但是當我要排序的列使用列標題,我得到一個錯誤消息沒有在表

可用的數據難道我做錯了什麼,或數據表的jQuery插件不注入HTML工作。

感謝

+0

不應該是'$('table#table01')。html(data);'(在選擇器中沒有空格)? – Clive

+0

Clive,這不會影響問題,因爲數據被正確加載。 – mko

回答

2

我知道你不注入html。當然,這不是使用插件的預期方式,因爲它實質上已經破壞了目的。它是在說'沒有數據',因爲你從字面上給插件沒有數據存儲在某處的緩存中,並且能夠排序,分頁等。你所做的只是將html附加到表標籤(而不是數據表)。如果您使用數據表的內置ajax功能,您只需將表中想要的數據作爲json返回(或者如果提供解析,則返回其他格式),並且數據表會自動將其轉換爲dom對象以顯示AND jquery對象以進行排序和這樣。

這也讓你的生活更加輕鬆。

P.S.當你使用插件的ajax功能時,它實際上將你的表格封裝在一堆div中,並添加了一些元素,所以你點擊的標題在技術上並不是「綁定」到你聲明的表格HTML如果這是有道理的?它與數據表用於爲您呈現表的對象的緩存綁定。

這裏是如何如果你想它已經被初始化後,您需要使用API​​將數據添加到表使用Ajax和DT http://datatables.net/release-datatables/examples/data_sources/ajax.html

1

最可能的答案是,你與插件內部搞亂。如果您的圖書館爲內容提供了setter方法,請使用它。如果沒有,我認爲一個更安全的方法是銷燬你的表,用你的數據填充一個新數據,然後重新數據化小部件。

4

一個例子:http://datatables.net/api#fnAddData。這使DataTables可以查看您要添加的內容並相應地處理它。直接注入HTML將不起作用,因爲DataTables不知道發生了這種情況 - 因此它試圖將它在重繪時知道的內容(在這種情況下沒有數據)。

另一種方法是在設置完HTML注入之後初始化表格(可能會按照olivieradam666的建議銷燬表格)。

Allan