【发布时间】:2017-05-15 04:33:50
【问题描述】:
场景: - 文档加载函数执行 aJax 调用并返回 JSON > 工作正常 - DataTables 使用 aJax 返回数据来绘制表格 > 工作正常 - 浏览器单击事件执行另一个 aJax 调用返回相同的 JSON 格式但具有新/更新的值 > DataTables 继续使用在步骤 1 中收到的 JSON - 当我在“网络”选项卡上查看返回数据时,它会显示正确的最新数据 > 但是,console.log 继续使用第一个 aJax 返回的数据集 - 我在 aJax 调用、DataTables 初始化甚至 HTML 中的 meta http-equiv="cache-control" content="no-cache" /> 中使用了 "cache": false
function myFunc(inpData) {
$.ajax({
url: "http://xyz/yzx/zxy.php",
data: mydata,
type: 'POST'
dataType: 'json'
cache: false,
}).done(function(rdata) {
console.log(rdata);
$('#my-table').DataTable({
data: rdata.visitors,
columns: [
{data: 'fullName'},
{data: 'company'},
{data: 'visiting'},
{data: 'phone'},
{data: 'checkIn'},
{data: 'checkOut'}
],
rowCallback: function(row,data,index) {
if(data['active'] = 1) {
$('td:eq(5)', row).html("<button type='button' class='btn btn-default chk-out-btn'>Check Out Now</button>");
$(row).addClass("active-visitor").attr('unqid',data['id']);
} else {
$('td:eq(5)', row).html(data['checkOut']);
$(row).addClass('inactive-visitor').attr('unqid',data['id']);
}
}, // end rowCallback
order: [[4, 'asc']],
destroy: true,
saveState: false,
cache: false
});
});
} //end myFunc
现在当再次调用 myFunc(inpData) 时,执行 console.log(rdata) 会继续显示旧数据。当我在“网络”选项卡中查找返回数据时,它具有更新的数据。
会发生什么???
【问题讨论】:
-
是否销毁之前的数据表并添加新的数据表?
-
试试
url: "http://xyz/yzx/zxy.php?v=" + new Date().getTime, -
@madalin ivascu 是的,因此 DataTables 初始化 @J Santosh 中的 "destroy": true 选项;尝试了您的建议,但不起作用当再次进行 aJax 调用时,有一个 JSON 属性“活动”从 1 变为 0,浏览器继续将其控制台记录为 1,而“网络”选项卡显示为 0跨度>
标签: jquery datatables