easyui datagrid发送两次请求的分析与解决方法

1.问题的引出
2.分析
3.解决办法

问题的引出

想看解决方法的直接跳过起因看解决方法栏

我参与的项目中前端使用的时easyui,需要添加一个新功能:在选中列表内的某一项跳转到另一个页面,在返回时仍是该列表页面,列表和分页功能都是使用的easyui的插件。

需求实现思路

实现思路:选中一条信息进入详细页面时获取该页的页码,放入session,在返回列表页面时通过设置easyui datagrid的“pageNumber”属性来进入当时的列表页面。
举个例子,如下图,我在第三页选中一个员工信息,跳转到他的详细信息页面,后台会在跳转到详细信息的时候获取该页面的页码,存入session,等我返回列表的时候,取出session中的页码,然后设置pageNumber,返回第三页的列表页面,而不是重新进入第一页。同时销毁session。
示例

分析

结果当然是失败了(手动笑哭)。当我从详细信息返回列表页面时,还是第一页,打开Chrome发现easyui datagrid居然查询了两次,第一次查询的参数中pageNumber是我设置的页码,第二次查询的时候是1,然后列表显示第一页。
找了很久原因可能是因为设置的pageNumber不为1,所以会进行第二次查询(但是进行第二次查询的触发代码没有找),第二次查询的时候有一处js代码只设置了total(数据总数)pageNumber未设置,然后easyui则默认为1,导致第二次查询展示的时第一页。所以我们需要将这段代码进行一下修改。

解决方法

本人使用的是easyui的1.5.2
在jquery.easyui.min.js 1.5.2文件中将_72b.pagination("refresh",{total:data.total})
改成_72b.pagination("refresh",{pageNumber:opts.pageNumber||_72b.pageNumber,total:data.total});。该行代码在10154行。
因为设置pageNumber不为1会查询两次,在该修改之前第二次查询时,该处代码只设置了total,其他为默认值(pageNumber=1),修改之后pageNumber为我们设置的值。

参考文章

https://yq.aliyun.com/ziliao/93167

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值