easyUI pagination分頁控件點擊下一頁后跳轉到最后一頁


easyui-pagination點擊下一頁直接跳轉到最后一頁的可能原因

今天做到聊天記錄展示頁面的時候發現一個bug:初次進入頁面加載出第一頁的數據,點擊下一頁的時候不是到第二頁而是到最后一頁。 如下圖所示:

 

這個bug確實讓我很郁悶,最初以為是后台的問題,調試了一會兒發現跟后台沒關系。

隨后檢查了下js代碼,我的pagination js是這樣寫的: Js代碼

$('#pp').pagination({

total:'${chatHistory.total}', pageNumber: '${pageNum}', pageSize:'${pageSize}',

onSelectPage:function(pageNumber, pageSize){ $(this).pagination('loading');

//alert('pageNumber:'+pageNumber+',pageSize:'+pageSize);

$(this).pagination('loaded');

self.location.href=\oChatHistory.action?senderId=${senderId}&page=\\ } });

上面pagination的pageNumber是從hidden標簽中取得值,經過alert('${pageNum}'),初次進入頁面時,彈出的值 確實是“1”。 找了半天沒結果,我索性把pageNumber :'${pageNum}'改成pageNumber : 1,結果bug消失了!

我非常納悶:pageNumber : '${pageNum}'向后台傳的值是1,而pageNumber : 1向后台傳的值也是1,兩者完全沒區別,但為什么后者點下一頁就不會跳到最后一頁呢?

最后找到原因:js數據類型問題。我隨后把代碼改成這樣:pageNumber : parseInt('${pageNum}')。ok,bug消失了,原來'${pageNum}'的值是一個字符串“1”,pageNumber只接收 整數,無法識別字符串沒結果造成了剛才的問題。

經過上面的排查,我大概猜想easyui的整個運行過程:

第一次向后台發送請求時,datagrid會獲取pageNumber中的值,並且把pageNumber的值保存起來。

用戶點擊下一頁的時候,datagrid會使pageNumber+1然后把數據向后台發送,但是正如上面所說:如果遇到$(\存的是一個字符串“1”, 結果“1”+1會是一個字符串而不是一個整數,此時datagrid沒法識別,就選擇獲得最后一頁的數據。


免責聲明!

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



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