Приветствую.
Продолжим начатый ранее обзор возможностей Action-хэлпера ContextSwitch. В этот раз мы будем совершенствовать нашу работу с AJAX, а точнее с AJAH.
Что же такое AJAH? Приведу небольшую цитату из статьи jQuery – JavaScript нового поколения с сайта RSDN
- AJAX – Asynchronous JavaScript and XML, асинхронный Javascript и XML. В ответ на запрос с клиента сервер отвечает правильно сфоримированным XML-документом.
- AJAH – Asynchronous JavaScript and HTML, асинхронный Javascript и HTML. В ответ на запрос с клиента сервер отвечает уже сгенерированным HTML-документом или его частью.
- AHAH – Asynchronous HTML and HTTP, асинхронный HTML и HTTP. То же самое, что и AJAH.
- AJAJ – JavaScript and JSON, асинхронный Javascript и JSON. В ответ на запрос с клиента сервер отвечает правильной записью объекта Javascript в формате JSON (http://json.org).
Выбор варианта ответа зависит от ситуации. Например, AJAX или AJAJ удобен в случае, когда возвращается относительно немного данных, и мы можем без осложнений обработать их при помощи JavaScript.
Но бывают ситуации, когда нам необходимо без перезагрузки страницы обновить целый блок данных, например, комментарии. Разумеется, можно и здесь получать структурированные данные, после чего генерировать HTML-код при помощи JavaScript, но это не лучший вариант по следующим причинам:
- Сложность реализации. Меньше кода — меньше ошибок. Здесь же нам придётся написать немало кода для генерации HTML.
- Сложность стилизации. Мы, программисты, должны заботиться о верстальщиках, что придут после нас. Каждый должен заниматься своим делом. Верстальщик – верстать, программист – программировать. Не будем интегрировать HTML-код в скрипты, иначе нас верстать и заставят
Итак, перед нами стоит следующая задача – реализовать серверную часть AJAH. По вышеназванным причинам нам не подходит хэлпер AjaxContext (хотя ознакомиться с его возможностями было бы полезно).
При помощи следующего кода мы добавляем новый контекст:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Если вам непонятно, что делает этот код, вам следует прежде изучить первую часть руководства.
Таким нехитрым способом мы добавляем контекст с именем “ajah”, который будет запрашивать скрипт вида с именем “%actionname%.ajah.phtml”. В нашем случае мы добавляем этот конекст к действию getNodexAction(), поэтому скрипт вида должен носить имя get-nodes.ajah.phtml.
Остаётся только добавить, что Zend_Layout будет отключен автоматически, и метод выведет только содержимое скрипта вида.
Вопросы задавайте в комментариях.
Спасибо за внимание, всего доброго.
Leave a Reply