jqgrid postData post方式累加參數,緩存了原來的數據

  今天作項目的時候發現一個問題,咱們有一個篩選項,一個是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

相關文章
相關標籤/搜索