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 google或baidu分页代码
Nov 26 PHP
php空间不支持socket但支持curl时recaptcha的用法
Nov 07 PHP
修改php.ini以达到屏蔽错误信息并记录日志
Jun 16 PHP
php调用Google translate_tts api实现代码
Aug 07 PHP
php中的boolean(布尔)类型详解
Oct 28 PHP
destoon实现调用图文新闻的方法
Aug 21 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
Aug 12 PHP
CI框架附属类用法分析
Dec 26 PHP
php生成微信红包数组的方法
Sep 05 PHP
Laravel 集成微信用户登录和绑定的实现
Dec 27 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
Jan 02 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
Aug 26 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对XML的操作详解
2013/06/07 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
2014/12/22 PHP
php实现有趣的人品测试程序实例
2015/06/08 PHP
php实现源代码加密的方法
2015/07/11 PHP
PHP+MySql+jQuery实现的&quot;顶&quot;和&quot;踩&quot;投票功能
2016/05/21 PHP
Aster vs KG BO3 第三场2.19
2021/03/10 DOTA
JsEasy简介 JsEasy是什么?与下载
2007/03/07 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
IE8下String的Trim()方法失效的解决方法
2013/11/08 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
AngularJS中的过滤器filter用法完全解析
2016/04/22 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
DropDownList实现可输入可选择(两种版本可选)
2016/12/07 Javascript
knockoutjs模板实现树形结构列表
2017/07/31 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
vue根据值给予不同class的实例
2018/09/29 Javascript
vue单页面在微信下只能分享落地页的解决方案
2019/04/15 Javascript
Vue实现回到顶部和底部动画效果
2019/07/31 Javascript
[01:41]DOTA2超级联赛专访YYF 称一辈子难忘TI2
2013/05/28 DOTA
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
Python中修改字符串的四种方法
2018/11/02 Python
Python3基于print打印带颜色字符串
2020/07/06 Python
python pymysql库的常用操作
2020/10/16 Python
Python图像读写方法对比
2020/11/16 Python
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
法律专业应届本科毕业生求职信
2013/10/25 职场文书
后勤人员岗位职责
2013/12/17 职场文书
书法比赛获奖感言
2014/02/10 职场文书
大学生见习报告范文
2014/11/03 职场文书
浅谈JS的原型和原型链
2021/06/04 Javascript
Python爬虫框架之Scrapy中Spider的用法
2021/06/28 Python
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技
Python实现日志实时监测的示例详解
2022/04/06 Python