当前位置: 首页 > 知识库问答 >
问题:

如何在异步搜索期间添加“加载更多”按钮?

漆雕兴平
2023-03-14

我有这个小问题...当我在我的网站上搜索任何内容时,结果会在键入时异步显示...独奏如果我要求的单词有类似我不知道的东西...100个结果,所有结果都会出现,页面的滚动会太长,所以我需要一些按钮,允许我10 x 10(或类似的东西)加载结果

这是我到目前为止所做的代码。。。

HTML:

<input type="text" id="busqueda"  name="busqueda" value="" required autocomplete="off" onKeyUp="search();">
<div id="result"></div>
<button id="loadmore" hidden="hidden" name="loadmore"> load more</button> 

<script type="text/javascript">
    var track_page = 1; //track user click as page number, righ now page number 1
</script>

PHP:

<?php
//Archivo de conexión a la base de datos
require('db_conexion.php');

$consultaBusqueda = $_POST['valorBusqueda'];


if (isset($consultaBusqueda)) {

//sanitize post value
$page_number = filter_var($_POST["page"], FILTER_SANITIZE_NUMBER_INT, FILTER_FLAG_STRIP_HIGH);
//throw HTTP error if page number is not valid
if(!is_numeric($page_number)){
  header('HTTP/1.1 500 Invalid page number!');
  exit();
}
//capacity
$item_per_page = 5;

//get current starting point of records
$position = (($page_number-1) * $item_per_page);

//query
$buscar= $conexion->query("SELECT info from table ORDER BY id DESC LIMIT $position,$item_per_page");

//conditionals
    if (!$query_execute->num_rows) {
        $mensaje = "no results";
    }else{
        $filas= $query_execute->num_rows;
        echo $filas.' Results for <mark>'.$consultaBusqueda.'</mark>';

//show results 
while($row = $buscar->fetch_array()) {

            $variables="something";      
            echo $variables;
        }
    } 
}else{
echo "Error";
}    
?>

JS公司:

function stopRKey(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type=="text")) {return false;}
}
document.onkeypress = stopRKey;


$(document).ready(function() {
    $("#result").html('<p> </p>');
    var track_page = 1; //track user click as page number, righ now page number 1
});

function search() {
     var textoBusqueda = $("input#busqueda").val();

     if (textoBusqueda != "") {
        $("#result").show();
        $(".close").show();
        $("#loadmore").show();
        $.post("actions/buscar.php", {valorBusqueda: textoBusqueda, 'page': track_page}, function(mensaje) {
              if(mensaje.trim().length == 0){
       $("#loadmore").hide();
      //display text and disable load button if nothing to load
      $("#loadmore").text("No hay mas resultados que mostrar").prop("disabled", true);
    }
      //load the result
      $("#result").html(mensaje);
        //scroll page to button element
      $("html, body").animate({scrollTop: $("#loadmore").offset().bottom}, 100);

         }); 
     } else { 
        $("#loadmore").hide();
        $(".close").hide();
        $("#result").html('<p> </p>');
        };

     //load more results
     $("#loadmore").click(function (e) { //user clicks on button
     track_page++; //page number increment everytime user clicks load button
     search(track_page);
});
};

但我还不能让它正常工作。。。因为ok;我搜索了一些东西,我得到了前10个结果,但是。。。当我点击“加载更多”按钮时,旧的十个结果被下一个结果替换,而不是按顺序排列的20个结果,所以。。。

希望你们能帮到我

共有1个答案

梁浩涆
2023-03-14

您总是将结果放入“结果”中,擦除“结果”内容。您可以:

>

前置结果:<代码>$('

移动id:<代码>$(“#结果”)。html(mensaje)。removeAttr('id')。addClass(“.result”)。之后('

 类似资料:
  • 问题内容: 我使用了官方的elasticsearch docker镜像,想知道在构建自定义索引时如何也可以包括在内,以便在启动容器时该索引已经存在。 我的尝试是将以下行添加到我的dockerfile中: 我收到以下错误: 我可以在构建过程中通过这样的API调用到达elasticsearch还是有完全不同的方法来实现这一点? 问题答案: 我有类似的问题。 我想创建一个预加载数据的docker容器(通

  • 参数: url - 返回JSON格式数据,数据格式与添加(更新)数据定义的data相同 asyncLoadCallback - 当加载完成时执行的回调函数 从一个数据源异步加载数据。用法: var url = "sampleData.json"; // 使用addDataAsync() API异步加载URL中的数据。 // 回调将在完成数据加载后执行。 controller.addDataAsyn

  • 问题内容: 经过大量的google’ing和PHP手动阅读之后,我真的很想在日期时间加上X分钟,但似乎一无所获。 我的日期时间格式是: : 要添加的分钟数只是0到59之间的数字 我希望输出与添加分钟的输入格式相同。 有人可以给我一个有效的代码示例,因为我的尝试似乎并没有带我去任何地方? 问题答案: 在ISO 8601标准的持续时间 是在形式的串,其中所述部件用指示的持续时间有多长一个数字值代替。

  • 问题内容: 我浏览了旧的问题,并尝试了许多似乎可以做到的不同方法。我最接近的工作是在这里:如何在自定义WP_QueryAjax上实现分页 我已经尝试了一切,但没有用。页面上没有任何变化。如果您检查并单击“加载更多按钮”,则jQuery会执行“加载更多按钮”操作,因为它从更改为,即使对我来说,这似乎也不对。它并没有添加帖子,我想我缺少一些简单的东西,但是我一生都无法解决。 我的模板文件中的代码是:

  • 操作步骤: ①以编辑状态进入地图,点击左侧图例面板中要使用的图层,所选图层的边缘显示为蓝色,表示新添加的标注将绘制在此图层上。 ②点击地图右上方工具栏上的"搜索"图标。 ③弹出搜索框。 ④在搜索框内输入关键字(如:天安门)后,点击搜索/回车。 ⑤在左边的搜索结果列表框中选择正确的地点,点击信息窗上的"添加点"按钮。 ⑥点击"完成"添加记录成功。 操作动图: [查看原图]