Объясните, как на множестве страниц подключить infinite scroll(ajax)?
Здравствуйте. Не могу понять, как на многих сайтах работает ajax scroll?
Ведь получается так:
Есть два файла, один - index.php (в нем страница с блоком, куда выводятся данные и скрипт, отправляющий запрос на новые данные). Второй файл - data.php (он принимает запрос и выдает данные).
И получается, что только одной связкой этих двух файлов можно вывести блоки определенного типа (имеется ввиду с одним class, id и стилями).
Как же тогда подключать ко множеству страниц ajax scroll, если на разных страницах разные стили блоков. И выходит, что нужно для каждого нового стиля(новой страницы) создавать свой data.php?
Объясните пожалуйста, как это все работает. В интернете не нашел никакого понятного объяснения
Обработчик запроса должен отдавать "чистые" данные, общепринятый формат для этого - JSON. Из чего следует, что разметка страниц может несколько варьироваться, если мы говорим об одном типе данных (условно post). В таком случае это не принципиально, данные просто подставляются в конкретный html-шаблон.
Если же мы говорим о данных разных типов, то вместе с запросом можно отсылать в параметр type, который будет сообщать обработчику какого типа данные мы запрашиваем и тот, ветвлениями, будет отдавать интересующие нас данные. То есть, иными словами, достаточно одного общего обработчика.
"...данные просто подставляются в конкретный html-шаблон." Но ведь мы делам запрос к другому php-файлу, который выдает определенные данные, то есть данные из конкретно одной, допустим, таблицы. А на другой странице требуется загрузить данные из другой таблицы, и как здесь обратится к тому же файлу?
Спасибо за ответ, частично понял, частично нет. Если у вас есть возможность, приведите пожалуйста пример
password22, для того, чтобы реализовать всё в одном файле, передаёте с GET запросом переменную type, в файле-обработчике реализуете проверку этой переменной:
if ($_GET['type'] === 'post') { // допустим тип данных пост
// return json с одними данными
} elseif ($_GET['type'] === 'comments') {
// return json с другими данными
}