AJAX и как лучше всего справиться с этим на стороне сервера в PHP - PullRequest
2 голосов
/ 04 июня 2009

Я начинаю писать довольно много ajax-сайтов, но я никогда не читал о лучших практиках, и теперь, когда я тоже этого хочу, я не могу найти статью, в которой говорится о том, что я хочу знать. То, о чем я действительно хочу узнать, - это работа с серверными вызовами AJAX, например, следует ли передавать все данные обратно с использованием JSON / XML, или что это чистый HTML, если вы попытаетесь не смешивать их для одной функции звоните в зависимости от результата. Кроме того, поскольку я в основном программирую с использованием CodeIgniter (MVC-фреймворк), как лучше разделить обычные запросы загрузки страниц из результатов AJAX.

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

Спасибо Том

Ответы [ 7 ]

6 голосов
/ 04 июня 2009

Я недавно завершил тяжелый сайт AJAX с использованием CodeIgniter и многому научился в процессе. Вот некоторые вещи, которые я выучил (читай: ошибки, которые я сделал):

Не возвращайте html-страницы и json одним и тем же методом.

Сначала казалось хорошей идеей иметь такую ​​настройку:

/ контроллер / метод / формат

где форматом по умолчанию было «html». Идея состояла в том, чтобы я мог что-то вроде / object / view показать html-страницу для этого объекта, а что-то вроде / object / view / json вернуть данные json для этого объекта.

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

Вместо этого я сейчас добавляю подпапку 'api' в разделе application / controllers. Контроллеры в этой подпапке возвращают только данные json. Это намного чище.

Не переопределяйте ваши шаблоны в javascript

Существует два подхода при извлечении данных через вызов AJAX. Вы можете вернуть какие-то закодированные данные (JSON, XML) и вставить их в правильное место на странице. Или вы можете визуализировать кусок html, а затем вставить его где-нибудь в div.

Если вы идете по маршруту данных, попробуйте придерживаться очень простой структуры разметки, например, диапазона или простого неупорядоченного списка. В моем случае у меня была определенная часть навигации, которая была возвращена с сервера в виде массива ссылок в кодировке JSON.

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

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

Используйте AJAX экономно / осторожно / только по мере необходимости

Вы можете сэкономить некоторые ресурсы сервера, используя умные запросы AJAX. Однако, если вы увлечены (* coughlikemecough *), вы быстро можете запустить несколько AJAX-запросов на одно действие пользователя. Как правило, это хуже с точки зрения производительности, поскольку каждый запрос имеет свою долю накладных расходов, и эти издержки сводят на нет выгоды только от запроса необходимых ресурсов.

Если вы обнаружите, что нажатие на элемент интерфейса вызывает более одного AJAX-запроса, это красный флаг, чтобы серьезно задуматься о том, что происходит. Вы можете создавать сложности без выгоды.

Кодировка JSON хороша

Вы можете json_encode () получить результаты запроса к базе данных, и он сгенерирует действительно хорошие объекты, с которыми вы можете работать в своем скрипте. Синтаксис чистый и хорошо работает с результатами, которые возвращают функции db CodeIgniter.

Надеюсь, вы найдете это полезным. Всегда лучше, когда вы можете учиться у кого-то чужих ошибок! :)

5 голосов
/ 04 июня 2009

JSON / XML или обычный

Я думаю, вы должны сделать выбор самостоятельно. Вы можете использовать XML или JSON или просто HTML. Это также зависит от сложности вашей проблемы. Я бы выбрал json, потому что PHP5 имеет действительно простые методы для кодирования и декодирования json.

Серверный

  • Просто поместите действия AJAX в контроллер. Используйте функцию get для получения данных и функцию post-codeigniter для хранения данных на сервере.
  • Я бы посоветовал взглянуть на рекомендации лучших разработчиков Yahoo , которые обеспечат молниеносную работу вашего сайта. Также ajax-запрос должен быть кэширован, если это возможно.

1025 * Javascript * jquery делает вызовы json действительно простыми. Вы можете использовать jQuery.get для получения информации и Jquery.post для хранения данных. Пример * * одна тысяча тридцать одна Я также постараюсь выложить простой пример в Интернете, чтобы вы могли на него посмотреть. Удачи,
Альфред Вестервельд

0 голосов
/ 05 июня 2009

Если вы не понимаете, как настроить вызовы с помощью Jquery и CodeIgniter, просто помните, что URL, который вы используете для вызовов AJAX, создается контроллером. Вы можете использовать метод контроллера для создания URL для вызова AJAX.

Для получения дополнительной информации, это руководство помогло мне как введение в AJAX + CodeIgniter.

http://www.mrforbes.com/thoughts/2009/01/28/a-quick-code-igniter-and-jquery-ajax-tutorial/

0 голосов
/ 04 июня 2009

Это зависит от того, чего вы пытаетесь достичь с помощью AJAX. Там обычно компромисс / сложность.

Например, вы можете сделать так, чтобы вызов AJAX извлекал весь сгенерированный список HTML с сервера, включая разметку, и просто вставлял его в контейнер, такой как div. Это просто реализовать, но недостатком будет необходимость отправлять больше байтов в браузер.

С другой стороны, вы можете заставить сервер отправлять строку JSON в ответ на вызов AJAX, а клиент обернуть каждый бит соответствующей разметкой и поместить его на страницу. Это более сложно, но может лучше подходить для определенных ситуаций.

Это действительно зависит от того, чего вы пытаетесь достичь, нет единого общего правила, определяющего «лучший способ реализации AJAX».

0 голосов
/ 04 июня 2009

Использование Ext JS или Jquery. Посмотрите, что они предлагают, есть множество ссылок, чтобы посмотреть, что они делают.

Изучив некоторые демонстрационные версии этих продуктов, вы, вероятно, будете вдохновлены тем, что будете использовать некоторые из этих вещей на своих сайтах.

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

0 голосов
/ 04 июня 2009

Это не очень удобно, если вы используете AJAX для всего, даже для запросов страниц. У вас будут проблемы с кнопкой «Назад», закладками, js-off браузерами и т. Д. Вы можете взломать его, но оно того не стоит. Используйте AJAX для отправки небольших сообщений пользователю, или, как вы видите, SO.

0 голосов
/ 04 июня 2009

ну, это зависит от того, что именно хотите делать. потому что простой способ использовать функции ajax - использовать jQuery framework. В нем есть все необходимое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...