Я пытаюсь реализовать дружественную к SEO бесконечную прокрутку в соответствии с рекомендациями Google, как показано здесь (http://scrollsample.appspot.com/items?page=7). У меня есть функция jquery, которая отправляет запрос в файл php (который запрашивает данные из базы данных) каждый раз, когда кто-то прокручивает до конца страницы, теперь все работает нормально, за исключением того, что когда пользователь прокручивает до конца страницы, функция запроса срабатывает более одного раза. Таким образом, на страницу загружаются повторяющиеся записи данных,теперь я знаю, что это не из моего php-файла, потому что я открыл страницу прямо в браузере, и все было хорошо. Проверьте ошибку здесь http://devx.dx.am/haze/categor.php?artemis=foo&&page=1
Я уже попробовал решения здесь ( jQueryФункция обратного вызова .load () запускается несколько раз ) и здесь ( $ (window) .load () выполняется 2 раза? ) и еще несколько других.
$(window).bind('scroll', function() { //#cagorwrap is the div that should contain the data retrieved
if($(window).scrollTop() >= $('#cagorwrap').offset().top + $('#cagorwrap').outerHeight() - window.innerHeight) { //344.6
var queryParameters = {}, queryString = location.search.substring(1),
re = /([^&=]+)=([^&]*)/g, m;
while (m = re.exec(queryString)) {
queryParameters[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
}
var url2 = "modules/paginate.php?numpages=set";
// #rc is a hidden div too
$("#rc").load(url2, function() {
var rc = $(this).html();
if (queryParameters['page'] < rc) {
queryParameters['page']++;
console.log(rc);
var stateObj = queryParameters['page'];
let cagh = $('#cagorwrap').height() + 344.6 - 75;
$("#cagorwrap").height(cagh);
history.pushState(null, null, "categor.php?artemis=cat&&page="+stateObj);
var url = "modules/paginate.php?artemis=cats&&page="+stateObj;
$("#obtainer").load(url, function () {
$("#cagorwrap").append($(this).html());
}); //#obtainer is a hidden div that receives the data at first before it is appended to #cagorwrap
} else{
//unbind scroll here
}
});
}
});