欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

jqgrid postData post方式累加参数,缓存了原来的数据

程序员文章站 2022-09-10 12:54:33
今天做项目的时候发现一个问题,我们有一个筛选项,一个是VIP用户,一个是普通用户,还有一个是全部用户,首先看下我们的selection 非常常用的一种格式,然后我们会做一个判断 但是这个我们发现了一个问题,就是在我们从vip和普通用户切换到全部数据之后,查询的还是上次的数据。 比如说我查了一次VIP ......

  今天做项目的时候发现一个问题,我们有一个筛选项,一个是vip用户,一个是普通用户,还有一个是全部用户,首先看下我们的selection

<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设置为空

1 jqgrid_post_data["user_type"] = '';

  第二种方法是看其他的博客了解到的,就是在reloadgrid之前,执行下面的函数,

1 var postdata = $('#jqgrid').jqgrid("getgridparam", "postdata");
2       $.each(postdata, function (k, v) {
3             delete postdata[k];
4 });

就是把原来的参数清理掉,然后在重新加载一遍数据。