我有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