Я недавно завершил тяжелый сайт 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.
Надеюсь, вы найдете это полезным. Всегда лучше, когда вы можете учиться у кого-то чужих ошибок! :)