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