easyui 出现缓存问题的可能原因以及解决办法:
可能原因:
1)浏览器问题;
解决办法:
在url后添加时间戳参数,例如:
URL = biRollbackAction.e?date=”+new Date().getTime()+“&其他参数名称=其他参数值
下边的代码中也有添加时间戳的url的语句,可以看一下。
2)在url中的参数中含有全局变量,这个全局变量的值保存了上一次操作的参数值,由此造成了缓存问题;
解决办法:
把这个全局变量改为局部变量,正确的写法的例子:
<script type="text/javascript">
function synBI(){
//获取被选中的记录
var ids = getChoosedRecord();
var path = '<e:url value="biSyncnAction.e?date='+new Date().getTime()+'&ids='+ids+'"/>';//获取路径
$.post(path,function(data){
alert(data);
refreshBiTable();
});
}
//刷新表格
function refreshBiTable(){
$("#vbapTable").datagrid("reload");
}
//获取被选中的记录
function getChoosedRecord(){
var ids = [];
var rows = $('#vbapTable').datagrid('getChecked');
for (var i =0;i < rows.length;i++) {
ids.push(rows[i].DOMAIN_ID);
}
//alert("选中了" + ids.length + "条");
return ids;
}
</script>
在上边这个例子中,如果把url中的ids这个数组变量变为全局变量,也就是下边这种写法,错误的写法的例子:
<script type="text/javascript">
var ids = []; function synBI(){
//获取被选中的记录
getChoosedRecord();
var path = '<e:url value="biSyncnAction.e?date='+new Date().getTime()+'&ids='+ids+'"/>';//获取路径
$.post(path,function(data){
alert(data);
refreshBiTable();
});
}
//刷新表格
function refreshBiTable(){
$("#vbapTable").datagrid("reload");
}
//获取被选中的记录
function getChoosedRecord(){
var rows = $('#vbapTable').datagrid('getChecked');
for (var i =0;i < rows.length;i++) {
ids.push(rows[i].DOMAIN_ID);
}
//alert("选中了" + ids.length + "条");
}
</script>
那么执行刷新表格的方法后不能清空ids这个变量中的值,ids这个数组变量会把这次的操作值保存下来,
在下一次选中一个新的记录并传参的时候,就会把这次的id值也一起传过去,这样就会出现类似缓存的问题了。