程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> thinkPHP使用post方式查詢時分頁失效的解決方法

thinkPHP使用post方式查詢時分頁失效的解決方法

編輯:PHP綜合

本文實例講述了thinkPHP使用post方式查詢時分頁失效的解決方法。分享給大家供大家參考,具體如下:

昨天晚上一直沒有解決的php項目中的bug,就在剛才終於搞定,在這裡還需要感謝各位大神給的幫助!

具體問題描述

最近遇到一個非常棘手的問題,也是因為剛入手thinkphp。在做項目的過程中,因為需要非常多的查詢條件,如果以get方式提交表單的話,會因為url長度限制而報錯,所以必須使用post方式提交表單數據,但是在分頁的過程中,遇到了問題,因為thinkphp自帶的分頁是以a標簽的形式,進行下一頁的,這樣查詢條件就沒有傳入後台,導致點擊下一頁的時候,出現空白。

查看了一下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程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved