2016-11-14 72 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,我第一次听说'范围'(我将从现在开始使用它!)。 –