Javascript滚动分页正在从数据库中检索相同的数据

Javascript滚动分页正在从数据库中检索相同的数据,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我在我的网站上使用javascript滚动分页。当一个页面被向下滚动时,一些项目会从数据库中加载。问题在于,滚动分页有时会从数据库中获取相同的数据。我使用了async:false。但是,它减缓了加载速度。 Javascript代码: if (check !== null) { $(window).scroll(function(ev) { if ($(window).scrollTop() + window.innerHeight >= $('#footer').offset

我在我的网站上使用javascript滚动分页。当一个页面被向下滚动时,一些项目会从数据库中加载。问题在于,滚动分页有时会从数据库中获取相同的数据。我使用了
async:false
。但是,它减缓了加载速度。 Javascript代码:

if (check !== null) {
  $(window).scroll(function(ev) {

    if ($(window).scrollTop() + window.innerHeight >= $('#footer').offset().top) {
      var last_id = $(".item:last").data("id");

      loadData(last_id);
    };

  });
}

var dataCount = 1;

function loadData(last_id) {
  $.ajax({
    url: 'some/url/loader',
    type: "get",
    data: {
      id: last_id
    },
    // async: false,
    success: function(data) {
      if (data) {
        dataCount++;
        $('#div').append(data);
        check = 1;
      } else if (!data) {
        console.warn('no data');
        check = null;
      }
    }
  });
}
控制器中的加载程序方法:

public function actionLoader() {
  $id = $_GET['id'];
  $cat_id = $_GET['cat_id'];
  $posts = SomeModel::getItems($id);

  if (!empty($posts)) {
    $q = $this - > renderPartial('view', array('data' => $posts));
    echo $q;
  }
}

最有可能的是
last\u id=$(“.item:last”).data(“id”)
指的是同一个id。尝试跟踪使用arr已经获取的内容,并添加另一个检查以确保JS没有获取已经获取的IDajax加载的内容不在DOM中,因此last id将是没有通过ajax加载的内容中的最后一个,因此你得到了同样的结果results@delboy1978uk为什么ajax加载的内容不在DOM中?他将内容附加到DOM:
$('#div')。append(data)
是的,这是真的,但是因为它最初不在那里,所以您需要添加新的侦听器,可能通过调用success方法中的函数来实现。看看这个问题