gpt4 book ai didi

javascript - 如何重置 ajax 搜索中的值以对结果进行分页

转载 作者:行者123 更新时间:2023-11-29 11:10:51 26 4
gpt4 key购买 nike

我在使用“加载更多按钮”时遇到问题。每次进行新搜索时,我都会尝试显示第二页结果(以及前面的其他页面),但是我用来确定哪一页是当前结果页的值总是在增加......而且我需要重置它当用户进行新搜索时

这是我正在使用的代码

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文件:接收输入文本值和当前页面生成一个限制显示结果,类似于:

$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++ ,我如何在每次进行新搜索时重置该变量,否则只是不断增加,而永远不会按照应有的方式开始,只是在第一次搜索时,然后就没用了

最佳答案

您可以使用 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 ...

每次计数器到达终点时,它都会重新启动。

关于javascript - 如何重置 ajax 搜索中的值以对结果进行分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40594965/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com