今天作项目的时候发现一个问题,咱们有一个筛选项,一个是VIP用户,一个是普通用户,还有一个是所有用户,首先看下咱们的selectionjson
<select name="" id="user_type"> <option value="">所有</option> <option value="1">VIP</option> <option value="2">普通</option> </select>
很是经常使用的一种格式,而后咱们会作一个判断缓存
1 var jqgrid_post_data = {};//最终向jqgrid传输的json数据 2 if($("#user_type").val()){ //若是有值的话,给json复制 3 jqgrid_post_data["user_type"] = $("#user_type").val(); 4 } 5 jQuery("#table_list_1").jqGrid("clearGridData"); 6 $("#table_list_1").jqGrid('setGridParam', { //从新请求参数 7 postData:jqgrid_post_data , 8 page:this_page, 9 }).trigger("reloadGrid");
可是这个咱们发现了一个问题,就是在咱们从vip和普通用户切换到所有数据以后,查询的仍是上次的数据。函数
好比说我查了一次VIP的用户数据,而后我切换到了所有用户,这个时候jqgrid仍是查询的VIP的用户,可是咱们打印 jqgrid_post_data 的时候,这个里面是没有user_type属性的。通过查找,发现了是jqgrid缓存了参数。结果办法分为两种,一种是比较简单的,当咱们选择所有用户的时候,把user_type设置为空post
1 jqgrid_post_data["user_type"] = '';
第二种方法是看其余的博客了解到的,就是在reloadGrid以前,执行下面的函数,this
1 var postData = $('#jqGrid').jqGrid("getGridParam", "postData"); 2 $.each(postData, function (k, v) { 3 delete postData[k]; 4 });
就是把原来的参数清理掉,而后在从新加载一遍数据。spa