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没法识别,就选择获得最后一页的数据。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了