我想到了一个AJAX模块服务层,其中包含与模型交互的 Controller 和 Action 。容易,但不是很可扩展,并且会违反DRY。如果我更改某些流程的后勤功能,则必须编辑AJAX Controller 和常规 Controller 。

因此,理想情况下,我将为javascript和非javascript用户加载完全相同的操作。我考虑过可能要检查$_POST['ajax'],如果设置了该代码,我将为数据加载一个不同的(json'y) View 。想知道如何/一个好方法来做到这一点(我想象中的前端 Controller 插件?),或者有人可以指示我去学习一个最新的教程,该教程描述了构建一个大型ajax应用程序的一种非常好的方法。

最佳答案

实际上,您可以使用request对象来确定是否通过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 header (并非总是存在,取决于JS库等)。请参阅(在“检测Ajax请求”的标题下):

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

07-28 02:19
查看更多