我有2個HTML,其中我只是用json加載數據,然後在它們上應用jQuery數據表。我現在需要的是刷新數據,但使用新的參數。從數組列表中刷新數據表數據
示例。
JSON:
[
{"name":"jon","sales":"100","set":"SET1"},
{"name":"charlie","sales":"500","set":"SET1"},
{"name":"jon","sales":"350","set":"SET2"},
{"name":"charlie","sales":"300","set":"SET2"}]
<table id="SET1" class="display compact">
<tr><th>Name</th><th>Sales</th>
</table>
<table id="SET2" class="display compact">
<tr><th>Name</th><th>Sales</th>
</table>
JS:
var uri = 'api/schedules';
$(document).ready(function() {
//function to refresh data
//loop thru every dept and query new data.
(function() {
var departments = ['Accounting', 'Sales', 'Marketing']
var idx = 0;
var len = departments.length;
function doNext() {
var entry = departments[idx];
console.log(idx + ":" + entry);
GetData(entry)
idx++;
if (idx < len) {
// Don't do anything special
} else {
// Reset the counter
idx = 0;
}
setTimeout(doNext, 10000);
}
doNext();
}());//end of function
}); //End Jquery Ready
function GetData(dept) {
$.getJSON(uri, { department: dept })
.done(function (data) {
// On success, 'data' contains a list of products.
var tr;
$.each(data, function (key, item) {
tr.append("<td >" + item.NAME + "</td>");
tr.append("<td>" + item.SALES+ "</td>");
tr.append("</tr>");
//loading the data to respective table set
$("#" + item.SET).append(tr);
});
})
}
加載數據的函數有效。我可以每分鐘看到新的數據。僅在手動運行時才初始化數據表。
但是,如果我調用GetData(部門)只有第一個'部門'被加載。在第二個部門,我從數據表中收到錯誤,它無法將數據加載到表中。
我試着用table.empty()aldo table.destroy()清除表格,並重新繪製了 ,但是我一直無法使它工作。
如何刷新和重繪數據表上的數據?
我的銷燬方法有什麼問題?在我的情況下,這是完美的工作 –
1.如果您使用的是jQuery數據表,那麼您在何時初始化這些表? 2.爲什麼你同時使用'$(document).ready()'和'(function()'?這些都沒有理由。3.爲什麼你要用jQuery插入新行? – davidkonrad
@davidkonrad,你是對的,我對這兩個.ready都犯了一個錯誤,我之所以用Jquery添加行是因爲我想根據其中一個單元格值將行分割成2個表格,我無法弄清楚我在初始化數據表時初始化了.done函數,如table = $(「table.display」)。Datatables({ ... – causita