thinkPHP使用post方式查詢時(shí)分頁失效的解決方法
本文實(shí)例講述了thinkPHP使用post方式查詢時(shí)分頁失效的解決方法。分享給大家供大家參考,具體如下:
昨天晚上一直沒有解決的php項(xiàng)目中的bug,就在剛才終于搞定,在這里還需要感謝各位大神給的幫助!
具體問題描述
最近遇到一個(gè)非常棘手的問題,也是因?yàn)閯側(cè)胧謙hinkphp。在做項(xiàng)目的過程中,因?yàn)樾枰浅6嗟牟樵儣l件,如果以get方式提交表單的話,會(huì)因?yàn)閡rl長度限制而報(bào)錯(cuò),所以必須使用post方式提交表單數(shù)據(jù),但是在分頁的過程中,遇到了問題,因?yàn)閠hinkphp自帶的分頁是以a標(biāo)簽的形式,進(jìn)行下一頁的,這樣查詢條件就沒有傳入后臺(tái),導(dǎo)致點(diǎn)擊下一頁的時(shí)候,出現(xiàn)空白。
查看了一下thinkphp官方手冊(cè),說了如果是POST方式查詢,如何確保分頁之后能夠保持原先的查詢條件呢,具體說明如下圖所示:
但是我對(duì)手冊(cè)有一處不解,既然是以通過a標(biāo)簽分頁,這樣$map(即查詢條件參數(shù))中的參數(shù)值是怎么傳到后臺(tái)的呢?我在網(wǎng)上也找到了了其他的一些方法,比如用$_REQUEST方式獲得參數(shù),說是包括了post和get方式的傳值,但是thinkphp的分頁是使用a標(biāo)簽來傳參的這樣的話,參數(shù)應(yīng)該還是無法獲得,嘗試了幾次,結(jié)果果然是失敗的。還有其他的方法,看了一下都不靠譜。于是在昨晚在博問上提問了一下。有一位大神給我靈感,就是用js修改a標(biāo)簽的href屬性。這樣確實(shí)可以,然后我嘗試了一直,終于解決了問題。
解決方法:
<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中的參數(shù)們,比如name='selCon.a',name='selCon.b'......
按照上面的方法解決了點(diǎn)擊下一頁的時(shí)候,查詢參數(shù)無法傳遞的問題。但是我又發(fā)現(xiàn)了一個(gè)問題,也就是說當(dāng)我們進(jìn)入第二頁之后,然后再改變查詢條件,這時(shí)查詢出來的結(jié)果不是從第一個(gè)開始,而是從第二頁開始,所以我們這里還需要在查詢的時(shí)候在js中把p參數(shù)(當(dāng)前頁碼)設(shè)置為1,具體方法如下:
<script type="text/javascript"> $(function(){ //查詢 $("#selecting").click(function(){ $("#form").attr("action", "__URL__/listDept/p/1"); $("#form").submit(); }); } </script>
希望本文所述對(duì)大家基于thinkPHP的php程序設(shè)計(jì)有所幫助。
- thinkphp5 URL和路由的功能詳解與實(shí)例
- thinkphp的URL路由規(guī)則與配置實(shí)例
- ThinkPHP路由詳解
- thinkphp路由規(guī)則使用示例詳解和偽靜態(tài)功能實(shí)現(xiàn)(apache重寫)
- ThinkPHP、Zend?Framework2、Yaf、Laravel框架路由大比拼
- 改寫ThinkPHP的U方法使其路由下分頁正常
- thinkphp中U方法按路由規(guī)則生成url的方法
- ThinkPHP路由機(jī)制簡介
- ThinkPHP采用GET方式獲取中文參數(shù)查詢無結(jié)果的解決方法
- ThinkPHP中I(),U(),$this->post()等函數(shù)用法
- thinkPHP5.1框架路由::get、post請(qǐng)求簡單用法示例
相關(guān)文章
IIS下配置頁面重寫(配合插件url-rewrite2去除頁面后綴名)的實(shí)現(xiàn)方法
這篇文章主要介紹了IIS下配置頁面重寫(配合插件url-rewrite2去除頁面后綴名)的實(shí)現(xiàn)方法,需要的朋友可以參考下2017-10-10thinkphp3.2同時(shí)連接兩個(gè)數(shù)據(jù)庫的簡單方法
這篇文章主要給大家介紹了關(guān)于thinkphp3.2同時(shí)連接兩個(gè)數(shù)據(jù)庫的簡單方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用thinkphp3.2具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08php 單例模式詳細(xì)介紹及實(shí)現(xiàn)源碼
這篇文章主要介紹了php 單例模式詳細(xì)介紹及實(shí)現(xiàn)源碼的相關(guān)資料,需要的朋友可以參考下2016-11-11Laravel實(shí)現(xiàn)通過blade模板引擎渲染視圖
今天小編就為大家分享一篇Laravel實(shí)現(xiàn)通過blade模板引擎渲染視圖,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10php中mysql連接和基本操作代碼(快速測(cè)試使用,簡單方便)
這篇文章主要介紹了php中mysql連接和基本操作代碼,用于快速測(cè)試時(shí)使用,簡單方便,PHP新手必會(huì),需要的朋友可以參考下2014-04-04Thinkphp5框架簡單實(shí)現(xiàn)鉤子(Hook)行為的方法示例
這篇文章主要介紹了Thinkphp5框架簡單實(shí)現(xiàn)鉤子(Hook)行為的方法,結(jié)合實(shí)例形式詳細(xì)分析了Thinkphp5框架實(shí)現(xiàn)鉤子(Hook)行為的步驟與相關(guān)操作技巧,需要的朋友可以參考下2019-09-09php使用FFmpeg接口獲取視頻的播放時(shí)長、碼率、縮略圖以及創(chuàng)建時(shí)間
本篇文章主要介紹了php使用FFmpeg接口獲取視頻的播放時(shí)長、碼率、縮略圖以及創(chuàng)建時(shí)間,具有一定的參考價(jià)值,有需要的可以了解一下。2016-11-11