2016-09-12 3 views
0

Я недавно изучил основы SQL, Ajax и (объектно-ориентированного) PHP, которые я использовал для использования, создавая фид информации для создания пользователем. Однако в настоящее время фид загружает только 20 последних записей в базе данных (так как загрузка всех из них сразу будет иметь негативное влияние на время загрузки страницы).Это правильный способ создать систему бесконечного прокрутки на моем сайте?

Я решил, что попытка реализовать систему бесконечной прокрутки (аналогично методу, используемому Twitter и Facebook), будет лучшим решением этой проблемы, но я не совсем уверен, как это сделать.

Я знаю, что первое, что мне нужно, это функция, чтобы узнать, достиг ли пользователь в нижней части страницы. Чтобы сделать это, я написал следующую простую JQuery:

$(window).scroll(function() { 
    var scrollBottom = $(document).height() - $(document).scrollTop() - $(window).height(); 
    if(scrollBottom < 200) { 
     // send Ajax request 
    } 
    }); 

Этот бит кода должен работать, но я обеспокоен риском множественных запросов Ajax отправляется на сервер, если пользователь прокрутки несколько раз, прежде чем обновлен фид сообщений.

Я понимаю, что следующее, что мне нужно сделать, это отправить запрос Ajax. Естественно, что сценарий, который в настоящее время получает первые 20 сообщений в базе данных использует линию PHP/SQL, глядя, как

$query = "SELECT * FROM table DESC LIMIT 0,20"; 

Я предполагаю, что мне нужно, чтобы заменить это чем-то вроде

$query = "SELECT * FROM table DESC LIMIT " . $x . "," . $x+20; 

а затем создать другой скрипт, который отслеживает, сколько раз запрос Ajax был отправлен, и использовать его для определения переменной $ x, чтобы обеспечить получение правильных результатов.

Наконец-то я знаю, что мне нужно создать какую-то функцию обратного вызова, чтобы отобразить сообщения, которые были извлечены.

Это правильный (лучший) метод для создания системы бесконечной прокрутки? Также, как я могу изменить jQuery, чтобы остановить отправку нескольких запросов?

+1

Определите «правильный» – Strawberry

+0

если он работает = правильный. if not = wrong – nogad

+0

Возможно, вам это интересно: http://midnightprogrammer.net/post/Infinite-Scrolling-In-ASPNET-With-jQuery/ – Velocibadgery

ответ

0

Да, вы правы, то, что вы ищете, это $query = "SELECT * FROM table DESC LIMIT " . $x . ", 20";, который должен получить следующие 20 строк и не допустить получения большего от $x.

Смежные вопросы