Иерархический AJAX - PullRequest
       1

Иерархический AJAX

0 голосов
/ 06 марта 2012

У меня есть PHP-приложение, построенное на основе архитектуры MVC без каких-либо платформ, которые в настоящее время генерируют полные страницы.

Например: Visiting (http://site.com/xyz) создаст полную страницу и доставит ее в браузер.

Теперь я хочу добавить AJAX в микс, чтобы через ответ AJAX возвращалась только часть страницы. Для приведенного выше примера это довольно просто реализовать.

Однакоприложение является иерархическим в том смысле, что внутри подстраниц может быть много подстраниц и страниц.

В моем случае, давайте возьмем эту страницу, например: http://site.com/system/backups/databases

В приведенном выше случае,должно произойти следующее:

  • Если пользователь находится на site.com, приложение должно сгенерировать систему / резервные копии / базы данных и вернуть его в ответе AJAX.

  • Если пользователь находится на site.com/system, приложение должно сгенерировать резервные копии / базы данных и вернуть их.

  • ... и т. Д.

Я использую YUI3 как мой фреймворк javascript и хотел бы свести к минимуму любое дублирование кода.Как я должен иметь дело со стороной клиента?

  • Должен ли я иметь центральный компонент AJAX, который выполняет ALL ajax для загрузки, отображения и выгрузки страниц?

  • Или у меня должен быть основной компонент AJAX, который имеет дело только с загрузкой одного уровня (в данном случае /system/) и позволяет странице, загруженной /system/, обрабатывать загрузку его подстраниц?Такой подход, кажется, приведет к значительному дублированию кода, но я могу ошибаться.

  • На стороне сервера, как это должно быть обработано?Как сервер должен решить, следует ли визуализировать system/backups/databases или просто backups/databases или databases?

1 Ответ

0 голосов
/ 02 апреля 2012

Решением, которое я придумал, было просто отправить весь HTML-код клиенту. Я убедился, что мой HTML правильно структурирован с помощью идентификаторов и классов для обозначения «подстраницы».

Получив эту информацию, клиент узнает, что уже отображается на странице и что было получено. Затем он просто удаляет детали, которые отличаются от полученных, и вставляет новые детали.

Очевидно, что это несколько неэффективно, так как мы отправляем полный ответ (а не только требуемый ответ) по сети, но это уменьшает большую логику для синхронизации клиентских представлений с тем, что генерируется на стороне сервера.

...