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