jQuery-PHP, AJAX и Zend Framework
// JavaScript

Как-то я уже рассказывал о библиотеке jQuery-PHP, и вот совсем недавно обнаружил, что она идеально сочетается с Zend Framework’ом.
Дабы сильно не закапываться, будет лучше всего привести пример реализации, начну с сервер-сайда, а именно со связки контроллера и экшена:
<?php
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 для описанного выше экшена будет выглядеть следующим образом:
<?php
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 как раз для этого и предназначен).