为Zend Framework应用程序构建AJAX的最佳方法

时间:2010-05-28 01:18:51

标签: php javascript jquery ajax zend-framework

我想过拥有一个AJAX模块服务层,其控制器和操作与我的模型交互。容易,但不是非常可扩展,并且会违反DRY。如果我改变某个过程的后勤,我将不得不编辑AJAX控制器和普通控制器。

理想情况下,我会为javascript和非javascript用户加载完全相同的操作。我想过可能会检查$_POST['ajax'],如果设置了,我会为数据加载不同的(json'y)视图。想知道如何/一个好方法(我想象的前端控制器插件?)或者是否有人能指出我的UP TO DATE教程,它描述了构建更大的ajax应用程序的一个非常好的方法。

2 个答案:

答案 0 :(得分:5)

您实际上可以使用请求对象来确定是否通过ajax发生了请求,例如:

// from your controller
if($this->getRequest()->isXmlHttpRequest()) {
    // an ajax request, do something special (e.g. render partial view)
} else {
   // render entire view
}

这基本上是测试x-requested-with标头(不是总是存在,取决于JS库等)。请参阅(在'检测ajax请求'标题下):

http://framework.zend.com/manual/en/zend.controller.request.html

答案 1 :(得分:1)

您可以检查XmlHttpRequest标头。然而,并非所有的Javascript库都能做到这一点,甚至那些并不一定在所有浏览器中都能做到这一点。

还有AjaxContext,基本上检查“上下文”请求变量,类似于你对$ _POST ['ajax']的想法。

我实际上最终做的与你原来的建议相似。我创建了一个AJAX模块。为了防止大量的控制器代码重复,我创建了一个处理模型上所有操作的服务层,因此我的控制器实际上只负责转换输入请求和显示。