我正在尝试使用AJAX和PHP实现无限滚动。 但是它不能正常工作。 我正在尝试执行搜索操作。 每当用户搜索某个字符串而不是一次加载整个详细信息时。 一次加载5个细节(在生产中将增加到50个)。 我正在使用AJAX。 这是我的PHP代码:

$get_elements_by_date = Jsonresponse::dbconnect()->prepare("SELECT * FROM paths INNER JOIN data ON data.filepath = paths.path_id INNER JOIN user ON data.data_user_id = user.user_id where paths.dir_path like :val and data.date_uploaded = :date_up and user.session_id = :session limit :lim offset :off");
    $get_elements_by_date->bindParam( ":session", $_SESSION['user']);

$get_elements_by_date->bindValue(':lim', (int)$lim, PDO::PARAM_INT);
$get_elements_by_date->bindValue(':off', (int)$off, PDO::PARAM_INT);
$get_elements_by_date->bindParam(':val', $val);
$get_elements_by_date->bindParam(':date_up', $_POST['date']);
$get_elements_by_date->execute();
$details = $get_elements_by_date->fetchall(PDO::FETCH_ASSOC);

我正在返回获取的元素。

这是我用于初始搜索的JS代码:

off_search = 0;
$.post('../BaseClass', {
  action: 'search_by_date',
  search: value,
  key: $(".custom-select").val(),
  token: $("#token").val(),
  date: $("#input_date").val(),
  offset: off_search,
},function(data) {
  off_search += 5;
  console.log(off_search);
  if(data.data[0] == 'no')
  {
  $(".loading1").remove();
  $(".table").remove();
  $(".upload_content").append("<center><h1 class='result' style='color:red;'>No records found<h1><center>");
  }
  else
  {
   // construct the table out of details
  }

off_search是充当sql查询中的偏移量的值。 每当我得到5个详细信息时,我都会增加它。

这是我的代码,将详细信息加载到表中

if(search_values_completed == 1)
{
console.log("returned here " + search_values_completed);
return;
}
$.post('../BaseClass', {
action: 'search_by_date',
search: value,
key: $(".custom-select").val(),
token: $("#token").val(),
date: $("#input_date").val(),
offset: off_search,
},function(data) {
console.log("search values is " + search_values_completed);
if(search_values_completed == 1)
{
  return;
}
off_search += 5;
console.log(off_search);
if(data.data[0] == 'no') {
  // perform no operation.
  search_values_completed = 1;
}
else
{
  //add to table
}

上面的代码是int名为load_search()的函数,我在

$(window).scroll(function() {
if((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {
        load_content()
 }
 }

一旦所有响应都发送到站点,为防止进一步的请求,我正在使用search_values_completed变量。

我的问题是AJAX是异步的,当我滚动到底部时,它被多次调用。 有时它正在请求具有相同偏移值的数据。 这导致数据重复。 有什么办法可以防止它吗?

接受任何建议,需要帮助

如果对此问题有任何疑问,请发表评论

  ask by Sandesh Ghanta translate from so

本文未有回复,本站智能推荐:

1回复

使用ajax无限滚动不适用于Chrome

好的,所以在对这个网站进行了大量研究之后,我编写了代码来执行无限滚动。 JS: 事实是,这在Mozilla中运行时非常好。 但是当我在Chrome或Opera中尝试相同时,它无法正常工作。 你能帮帮我,告诉我问题所在吗?
1回复

jQuery不适用于无限滚动

我刚刚制作了一个新的wordpress主题,并且正在使用以下脚本来获得类似手风琴的效果。 我刚刚激活了jetpack的无限滚动 。 jQuery脚本不适用于无限滚动添加的新加载内容。 我的猜测是,每当无限滚动添加新内容时,都必须重新加载或至少触发脚本。 我整天都在网上搜索,找不到任
1回复

基于AJAX的无限滚动-不适用于以DESC顺序排序的Mysql记录

我正在使用此处提供的代码段 我的PHP代码是: 相关的css代码是: java脚本代码(end-less-scroll.js)如下: 上面的代码调用了具有以下代码的load_more.php: 最后,提取的记录将在此div中列出(在HTML文件中)
1回复

Ajax不适用于Firefox,但适用于Chrome

我正在尝试使用ajax插入数据库。 它适用于chrome,但适用于Firefox。 请帮我。这是我的代码 我在控制台上得到了这些 这是我的剧本 和connection / profile_comment.php
3回复

AJAX加载不适用于脚本

我正在尝试创建一个网站,在该网站中,文档加载完成后,HTML代码即被加载到div中。 不过,悬停功能不适用于AJAX加载。 请帮忙。 “ sidebar-main.php”文件: 主PHP文件中的侧栏:
1回复

Ajax的jQuery不适用于IE

大家好。 我使用的js / ajax脚本不适用于Internet Explorer。 Firefox可以。 顺便说一句head标签,即时通讯使用这个: loader.php包含获取页面的php代码,例如: 因此,在链接上,我正在使用链接1将内容加载到div内容中。
2回复

preventDefault不适用于ajax请求

我的preventDefault事件无法正常工作,但无法理解原因。 我在四处搜寻,但不知道问题出在哪里。 如果我的案件在某处有答复,请原谅! 这是我的代码:
1回复

会话不适用于AJAX

我有一个目录,其中包含仅用作模式的文件。 这些文件是PHP,格式如下:“ modal.filename.php”。 参见示例: “ modal.user.php ”: 如果直接输入,结果是: 如果我通过AJAX或file_get_contents()打电话给他,结果是: