本文分析jQuery EasyUI 1.3.4中手动设置Datagrid的pageNumber大于1时触发两次请求的原因。问题源于分页控件初始化参数与初次请求不一致。通过修改jquery.easyui.min.js源码,在refresh调用中保留当前pageNumber,可有效避免二次请求,确保分页逻辑正确执行。
EasyUI Datagrid pageNumber重复请求问题解析
本文详细介绍如何解决在使用jQuery插件EasyUI时,手动设置Datagrid组件的pageNumber参数所引发的重复请求问题。
问题现象与源码定位
一、问题现象:
$('#tb-page-list').datagrid({
url: '/BisOrderInfo/GetList',
pageNumber: 2,
pageSize: 10
});
当开发者手动将pageNumber设置为大于或等于2的值时,观察网络请求会发现系统发起了两次请求。值得注意的是,第二次请求中的pageNumber参数被重置为1。
二、原因分析:
该问题出现在jquery.easyui.min.js文件版本1.3.4的第7821至7828行代码中。
根本原因在于分页控件初始化时的默认参数(total为0,pageNumber为1)与用户初次请求第二页时的参数不一致。这种差异触发了内部的再次请求逻辑:_5dc(_545);
解决思路:当页面刷新导致请求到的数据总数发生变化时,必须同步更新pagebar(分页栏)的显示状态,以保持一致性。
代码修改方案
三、解决方案:
针对jquery.easyui.min.js版本1.3.4,需要修改第7822行的代码逻辑。
_54a.pagination("refresh",{total:data.total});
具体修改方式如下:
参考代码实现:
_54a.pagination("refresh",{pageNumber:opts.pageNumber||_54b.pageNumber,total:data.total});
更多关于jQuery相关实用技巧,读者可参考本站专题:《jQuery扩展技巧总结》、《jQuery常用插件及用法总结》、《jQuery拖拽特效与技巧总结》、《jQuery表格(table)操作技巧汇总》、《jquery中Ajax用法总结》、《jQuery常见经典特效汇总》、《jQuery动画与特效用法总结》及《jquery选择器用法总结》。
希望上述解决方案能对各位jQuery开发者有所帮助。