Jquery DataTables强制浏览器缓存数据
情景: -文档加载函数执行aJax调用并返回JSON>working OK -DataTables使用aJax返回数据绘制一个表>正常工作 -Browser click event是否另一个aJax调用返回相同的JSON格式,但具有新的/更新的值>DataTables继续使用步骤1中接收到的JSON -当我在“网络”选项卡上查看返回数据时,它会显示正确的最新数据>,然而,console.log继续使用第一个aJax返回的数据集 -我在aJax调用中使用了“cache”:false,在HTML中使用了DataTables初始化,甚至还使用了metahttp equiv=“cache control”content=“no cache”/>Jquery DataTables强制浏览器缓存数据,jquery,datatables,Jquery,Datatables,情景: -文档加载函数执行aJax调用并返回JSON>working OK -DataTables使用aJax返回数据绘制一个表>正常工作 -Browser click event是否另一个aJax调用返回相同的JSON格式,但具有新的/更新的值>DataTables继续使用步骤1中接收到的JSON -当我在“网络”选项卡上查看返回数据时,它会显示正确的最新数据>,然而,console.log继续使用第一个aJax返回的数据集 -我在aJax调用中使用了“cache”:false,在HTML中使
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){
$.ajax({
url:“http://xyz/yzx/zxy.php",
数据:mydata,
类型:“POST”
数据类型:“json”
cache:false,
}).done(函数(rdata){
console.log(rdata);
$(“#我的表”).DataTable({
数据:rdata.visitors,
栏目:[
{数据:'全名'},
{数据:'公司'},
{数据:'访问'},
{数据:'电话'},
{数据:'签入'},
{数据:'签出'}
],
rowCallback:函数(行、数据、索引){
如果(数据['active']=1){
$('td:eq(5)”,第行).html(“立即签出”);
$(行).addClass(“活动访问者”).attr('unqid',data['id']);
}否则{
$('td:eq(5)”,第行).html(数据['checkOut']);
$(行).addClass('inactive-visitor').attr('unqid',data['id']);
}
},//结束行回调
订单:[[4,‘asc']],
摧毁:没错,
saveState:false,
缓存:false
});
});
}//结束myFunc
现在,当再次调用myFunc(inpData)时,doing console.log(rdata)继续显示旧数据。当我在“网络”选项卡中查找返回数据时,它具有更新的数据
会发生什么事 我终于修好了
if(data['active'] = 1)
改为
if(data['active'] == 1)
可能DataTables在aJax返回时将数字转换为字符串是否销毁以前的datatable并添加新datatable?请尝试
url:http://xyz/yzx/zxy.php?v=“+new Date().getTime,
@madalin ivascu yes,因此在DataTables初始化@J Santosh中有“destroy”:true选项;尝试了您的建议,但不起作用当再次进行aJax调用时,有一个JSON属性“active”正在从1变为0,浏览器将继续控制台。将其记录为1,同时“network”选项卡将其显示为0有点晚,但=
不是有效的运算符。它可以是==
(等于)或===
(等于且来自相同的数据类型)