2016-11-14 69 views
0

我遇到了「加載更多按鈕」的問題。每次我進行新的搜索時,我都會嘗試顯示結果的第二頁(以及其他結果),但是我用來確定哪些結果是當前頁面的值始終在增加......並且我需要重置它當用戶進行搜索如何將ajax搜索中的值重置爲分頁結果

下面的代碼我使用

HTML:

<input type="text" id="input"/> 
<button id="search"> Search </button> 
<div id="result"> </div> 

JS送的形式:

<script type="text/javascript"> 
    $('#search').on('click', function(){ 
    var page_search = 1; 
    var search= $('#input').val(); 
    showSearch(page_search); 
    }); 

      $("#load-more").click(function() { 
      page_search++; 
      showSearch(page_search); 
      }); 

      function showSearch(page_search){ 
      $.post('search.php', {'page_search': page_search, 'search': search}, function(data){ 
       if(data.trim().length == 0){ 
       $("#result").show().html("no more results found"); 
       }else if(page_search=1){ 
       $("#result").html(data); 
       }else{ 
       $("#result").append(data); 
       } 
      }); 
      } 
    </script> 

php文件:是reciving輸入文本VALU e和當前頁面產生一個極限,顯示的結果,是這樣的:

$item_per_page = 5; 
$position = (($page-1) * $item_per_page); 
$search= $_POST['search']; 
$page=$_POST["page_search"]; 

$query=("SELECT columns from table oder by blabla DESC LIMIT $position, $item_per_page"); 

問題是與page_search ++,我怎麼能重置變量每次我提出一個新的搜索,否則只是增加和增加並且從未開始如何應該,只是在第一次搜索,但然後是無用的

+1

你的錄音記錄似乎有點自負,所以我們爲什麼要幫你?瞭解我們如何滾動,上傳和標記爲答案,如果它對您有用,因爲它會幫助我們建立檔案。刪除和重新創建問題不會「解決」這個問題。 – Xorifelse

回答

1

您可以使用PHP計數器,而不是JavaScript計數器。複製粘貼在兩個文件給出的文件名未來兩碼,在瀏覽器中打開的「ajax1.php」看到它在運行:

ajax1.php

<html> 
    <head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
    <script type = "text/javascript"> 
function my_button() 
{ $.ajax({ url  : "ajax2.php", 
      success : function (data) 
      { document.getElementById("result").innerHTML = data; }, // ◄■■ GET DATA 
      error : function (xhr) 
      { alert("error"); } 
     }); 
} 
    </script> 
    </head> 
    <body onload="my_button()"> 
    <button onclick="my_button()">Load more</button> <!-- ◄■■ LOAD BUTTON --> 
    <div id="result"> <!-- ◄■■ DIV TO DISPLAY DATA --> 
    </div> 
    </body> 
</html> 

ajax2.php

<?php 
session_start(); 
if (! isset($_SESSION["page_search"])) // ◄■■ FOR THE FIRST PAGE. 
    $_SESSION["page_search"] = 0; // ◄■■ CREATE COUNTER. 
$database = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20, 
        21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37); 
echo implode(",",array_slice($database,$_SESSION["page_search"],5)); 
$_SESSION["page_search"] += 5; // ◄■■ INCREASE COUNTER. 
if ($_SESSION["page_search"] > count($database)) // ◄■■ FOR THE LAST PAGE. 
    unset($_SESSION["page_search"]); // ◄■■ DESTROY COUNTER. 
?> 

我使用一個數組來表示數據庫中的數據,並array_slice代表你select ... limit ...

每次計數器達到最終重新啓動。

+1

期待一個投票和這個標記?那麼,你從我那裏得到一個,但不要指望這個標誌。順便說一句,我喜歡這個'◄■■' – Xorifelse

+0

如何使用[range](http://php.net/manual/en/function.range.php)'range(1,37);'而不是填充數組手動。 – dbf

+0

@dbf,我第一次聽說'範圍'(我將從現在開始使用它!)。 –