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


  今天做項目的時候發現一個問題,我們有一個篩選項,一個是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 });

就是把原來的參數清理掉,然后在重新加載一遍數據。

 這兩種辦法,本人都是親測過的,都是好用的。個人覺得,第二種比較通用,大家可以把第二種方法封裝成函數,然后在jqgrid獲取數據的時候,先調用這個函數。清理掉原來的數據,這樣比較通用,比較簡單。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM