thinkPHP使用post查询时分页失败的解决方案
本文描述了thinkPHP通过post查询时分页失败的解决方案。分享给大家参考,如下:
昨晚没有解决的php项目中的bug,刚才终于解决了,需要感谢各位大神的帮助!
具体问题描述。
最近遇到一个很难的问题,因为刚开始用thinkphp PHP。在做项目的过程中,因为需要很多查询条件,如果表单是通过get提交的,会因为url长度的限制而报错,所以表单数据必须通过post提交。但是在分页的过程中遇到了问题,因为thinkphp自己的分页是以标签的形式,执行下一页,使得查询条件没有传到后台,导致点击下一页时出现空白。
查看官方thinkphp手册后,我说如果是POST查询,如何保证分页后可以保持原来的查询条件,如下图所示:
但是,我对手册有意见。既然是用标签A分页,$map中的参数值(即查询条件参数)怎么传到后台?我还在网上找到了一些其他的方法,比如用$_REQUEST获取参数,其中包括通过post和get进行价值转移。但是thinkphp的分页使用了一个标签来传递参数,所以参数应该还是得不到。经过几次尝试,结果真的是失败了。还有其他方法,看了也不靠谱。所以昨晚我在博客里问了一个问题。我受到一位大神的启发,他用js修改了A标签的href属性。真的很管用,然后我一直尝试,终于解决了问题。
解决方法:
超文本标记语言.bodyform操作id=' form '方法='POST './for.-paging-div class=' item HR ' style=' float : right;'div class=' current ' id=' page bar ' { $ page }/div/div.脚本类型=' text/JavaScript ' $(function(){//page bar(修改链接方法)$ ('# pagebar a ')。Click (function () {vartmp href=$。tmpHref=tmpHref . replace(/\/selCon \//,' ');$('#form ')。attr('action ',TMphReF);$('#form ')。submit();返回false});}/script/body/html,其中selCon是表单中的参数,例如name='selCon.a ',name='selCon.b '.根据上述方法,解决了点击下一页时无法传递查询参数的问题。但是我发现了另外一个问题,就是说当我们进入第二页,然后改变查询条件的时候,查询结果并不是从第一页开始,而是从第二页开始,所以我们在查询的时候还需要在js中把p参数(当前页码)设置为1。具体方法如下:
脚本类型=' text/JavaScript ' $(function(){//query $(' # selecting '))。单击(function () {$ ('# form '))。attr ('action ',' _ _ URL _ _/list dept/p/1 ');$('#form ')。submit();});}/script希望本文所描述的内容对基于thinkphp的PHP编程有所帮助。
版权声明:thinkPHP使用post查询时分页失败的解决方案是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。