Jquery бесконечная прокрутка и XML - PullRequest
0 голосов
/ 22 февраля 2011

Я видел несколько плагинов, которые загружают больше контента при прокрутке вниз страницы, но большинство из них связаны со столбцом в базе данных с автоматически инкрементированным идентификатором.Мне нужно сделать это только с XML-файлом.

Есть идеи?

Очень признателен.

1 Ответ

0 голосов
/ 22 февраля 2011

XML-файл находится на сервере, но он можно было бы разобрать с помощью jQuery? Я мог бы использовать AJAX и разобрать весь XML-файл, но это победит бесконечная прокрутка / ленивая загрузка?

Если вы отправите свой XML клиенту, это будет , что приведет к тому, что браузер проанализирует его и создаст DOM. В зависимости от его размера (несколько килобайт? Мегабайт?) Это может быть быстрым или может занять некоторое время. Отправка в браузер всех if, по умолчанию, также увеличивает пропускную способность и да, каким-то образом побеждает цель отложенной загрузки.

Бесконечная прокрутка, однако, является парадигмой пользовательского интерфейса, и поэтому вы можете реализовать ее, даже если вы всегда отправляете весь XML-файл в браузер. Опять же, это зависит от того, чего вы хотите достичь - сохранить пропускную способность или просто создавать контент «на лету».

Предположим, вы оставили файл на сервере, потому что он очень большой:

  • Пусть сервер загрузит его в многопоточный (!) DOM-объект. Не уничтожайте объект во время жизни приложения, используйте его повторно для каждого запроса, сохраняя его в приложении (или сеансе). Фактически это создает «базу данных».
  • Создание прокси-страницы, которая обращается к XML и возвращает его часть в браузер. Вы можете использовать XPath для извлечения запрошенных битов из объекта XML DOM.
  • Используйте ваш любимый плагин jQuery с бесконечной прокруткой и настройте страницу прокси для принятия параметров запроса.

Гипотетический запрос от плагина бесконечной прокрутки может выглядеть как

http://server.name/path/data.aspx?start=516&count=10

И ваш data.aspx будет использовать запрос XPath для извлечения 10 элементов XML из 516-го элемента в:

/root/data[position() >= 516 and position() < 516 + 10]

Затем вы либо сконструируете HTML из этого, либо отправите его в виде необработанного XML и оцените его с помощью jQuery на клиенте.

Вероятно, существуют специализированные фреймворки, которые делают все это, но если бы я внедрил такую ​​систему, вышеизложенное примерно то, что я бы сделал.

...