jQuery-PHP, AJAX и Zend Framework // PHP
Как-то я уже рассказывал о библиотеке jQuery-PHP, и вот совсем недавно обнаружил, что она идеально сочетается с Zend Framework’ом.
Дабы сильно не закапываться, будет лучше всего привести пример реализации, начну с сервер-сайда, а именно со связки контроллера и экшена:
require_once 'Zend/Controller/Action.php'; /** * Ajax Controller */ class AjaxController extends Zend_Controller_Action { /** * index Action * @return void */ public function indexAction() { // check is AJAX request or not if (!$this->getRequest() -> isXmlHttpRequest()) { $this->getResponse()-> setHttpResponseCode(404) -> sendHeaders(); $this->renderScript('empty.phtml'); return false; } // requery php library require_once 'jQuery.php'; // assign to div with id = 'test' current time jQuery('div#test')->html(date('H:i:s')); } }
Чуть-чуть поясню – в первом условии проверяется действительно ли запрос осуществлен посредством AJAX’a, далее подключаем библиотеку jQuery и юзаем её.
Шаблон index.phtml для описанного выше экшена будет выглядеть следующим образом:
require_once 'jQuery.php'; // only jQuery response, nothing more jQuery::getResponse();
Еще нам понадобиться внести изменения в клиентскую часть, а именно подключить библиотеку в контроллере который нуждается в AJAX’е, к примеру так:
$this->view->headScript()->appendFile('/public/js/jquery.js'); $this->view->headScript()->appendFile('/public/js/jquery.php.js');
И непосредственно добавить вызов функции $.php({},{}) для какого-либо события:
<a href="#" onclick="javascript:$.php('<?php echo $this->Url(array('controller'=>'ajax', 'action'=>'index'));?>',{});return false;">click me</a>;
Как видите, можно перенаправить запрос на любой модуль, контроллер и экшен (см. описание хэлпера Url), а так же передать данные через GET или POST (второй параметр функции $.php как раз для этого и предназначен).