easyui 向后台传参出现缓存问题的可能原因以及解决办法

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值也一起传过去,这样就会出现类似缓存的问题了。


 

阅读更多

没有更多推荐了,返回首页