thinkPHP使用post方式查询时分页失效的解决方法


Posted in PHP onDecember 09, 2015

本文实例讲述了thinkPHP使用post方式查询时分页失效的解决方法。分享给大家供大家参考,具体如下:

昨天晚上一直没有解决的php项目中的bug,就在刚才终于搞定,在这里还需要感谢各位大神给的帮助!

具体问题描述

最近遇到一个非常棘手的问题,也是因为刚入手thinkphp。在做项目的过程中,因为需要非常多的查询条件,如果以get方式提交表单的话,会因为url长度限制而报错,所以必须使用post方式提交表单数据,但是在分页的过程中,遇到了问题,因为thinkphp自带的分页是以a标签的形式,进行下一页的,这样查询条件就没有传入后台,导致点击下一页的时候,出现空白。

查看了一下thinkphp官方手册,说了如果是POST方式查询,如何确保分页之后能够保持原先的查询条件呢,具体说明如下图所示:

thinkPHP使用post方式查询时分页失效的解决方法

但是我对手册有一处不解,既然是以通过a标签分页,这样$map(即查询条件参数)中的参数值是怎么传到后台的呢?我在网上也找到了了其他的一些方法,比如用$_REQUEST方式获得参数,说是包括了post和get方式的传值,但是thinkphp的分页是使用a标签来传参的这样的话,参数应该还是无法获得,尝试了几次,结果果然是失败的。还有其他的方法,看了一下都不靠谱。于是在昨晚在博问上提问了一下。有一位大神给我灵感,就是用js修改a标签的href属性。这样确实可以,然后我尝试了一直,终于解决了问题。

解决方法:

<html>
...
...
<body>
<form action="" id="form" method="POST">
....
....
</for>
...
...
<!--分页-->
<div class="Item hr" style="float:right;">
   <div class="current" id="pageBar">{$page}</div>
</div>
...
...
<script type="text/javascript">
  $(function(){
     // 分页(修改链接方法)
    $('#pageBar a').click(function(){ 
      var tmpHref = $(this).attr('href');
      tmpHref = tmpHref.replace(/\/selCon\//,"");
      $("#form").attr("action", tmpHref);
      $("#form").submit();
      return false; 
    });
  }
</script>
</body>
</html>

其中,selCon是form中的参数们,比如name='selCon.a',name='selCon.b'......
按照上面的方法解决了点击下一页的时候,查询参数无法传递的问题。但是我又发现了一个问题,也就是说当我们进入第二页之后,然后再改变查询条件,这时查询出来的结果不是从第一个开始,而是从第二页开始,所以我们这里还需要在查询的时候在js中把p参数(当前页码)设置为1,具体方法如下:

<script type="text/javascript">
  $(function(){
    //查询
    $("#selecting").click(function(){
      $("#form").attr("action", "__URL__/listDept/p/1");
      $("#form").submit();
    });
  }
</script>

希望本文所述对大家基于thinkPHP的php程序设计有所帮助。

PHP 相关文章推荐
PHP 高手之路(三)
Oct 09 PHP
PHP 5.0 Pear安装方法
Dec 06 PHP
PHP下用rmdir实现删除目录的三种方法小结
Apr 20 PHP
破解图片防盗链的代码(asp/php)测试通过
Jul 02 PHP
Windows下Apache + PHP SESSION丢失的解决过程全纪录
Apr 07 PHP
简单谈谈PHP vs Node.js
Jul 17 PHP
学习php设计模式 php实现原型模式(prototype)
Dec 07 PHP
PHP 中提示undefined index如何解决(多种方法)
Mar 16 PHP
php上传图片类及用法示例
May 11 PHP
CI框架数据库查询缓存优化的方法
Nov 21 PHP
php连接微软MSSQL(sql server)完全攻略
Nov 27 PHP
PHP使用标准库spl实现的观察者模式示例
Aug 04 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
Dec 09 #PHP
微信支付PHP SDK之微信公众号支付代码详解
Dec 09 #PHP
作为程序员必知的16个最佳PHP库
Dec 09 #PHP
学习php设计模式 php实现备忘录模式(Memento)
Dec 09 #PHP
学习php设计模式 php实现观察者模式(Observer)
Dec 09 #PHP
PHP判断手机是IOS还是Android
Dec 09 #PHP
PHP的Yii框架的常用日志操作总结
Dec 08 #PHP
You might like
PHP中__FILE__、dirname与basename用法实例分析
2014/12/01 PHP
PHP获取input输入框中的值去数据库比较显示出来
2016/11/16 PHP
laravel 使用auth编写登录的方法
2019/09/30 PHP
jQuery 创建Dom元素
2010/05/07 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
Bootstrap进度条组件知识详解
2016/05/01 Javascript
前端性能优化及技巧
2016/05/06 Javascript
js仿手机页面文件下拉刷新效果
2016/10/14 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
Node.js查找当前目录下文件夹实例代码
2017/03/07 Javascript
JavaScript和JQuery获取DIV值的方法示例
2017/03/07 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
2017/03/10 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
2017/10/19 Javascript
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
node.js +mongdb实现登录功能
2020/06/18 Javascript
如何配置vue.config.js 处理static文件夹下的静态文件
2020/06/19 Javascript
Vue组件间数据传递的方式(3种)
2020/07/13 Javascript
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
python根据经纬度计算距离示例
2014/02/16 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
详解基于python-django框架的支付宝支付案例
2019/09/23 Python
Python中的引用和拷贝实例解析
2019/11/14 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
python实现信号时域统计特征提取代码
2020/02/26 Python
详解python如何引用包package
2020/06/07 Python
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
英文简历中的自我评价用语
2013/12/09 职场文书
《东方明珠》教学反思
2014/04/20 职场文书
C++程序员求职信
2014/05/07 职场文书
重阳节慰问信
2015/02/15 职场文书
Java使用Unsafe类的示例详解
2021/09/25 Java/Android
Nginx动静分离配置实现与说明
2022/04/07 Servers