【发布时间】:2011-02-04 14:48:19
【问题描述】:
我有一个使用 Zend Framework 构建的应用程序。我决定使用 JQuery 而不是 Dojo。我确实使用 ZendX 助手来处理 ajaxLinks 和 dialogContainers 之类的东西。我想尝试尽可能使 GUI 成为 AJAX 驱动的。但我很难决定我认为什么是最好的方法。 大多数时候,将“页面”加载到 dialogContainer 中,而不是重新加载整个页面。例如,您可以得到一个对话框,其中包含用于更改某些用户数据或类似内容的表单。
起初我返回了整个页面,但如果使用 AJAX 请求请求它,它会使用不同的布局模板来避免所有不必要的 javascript 包含等。这使我能够构建一个基本上可以正常浏览的页面版本并通过 AJAX。但我没有说服自己我喜欢这个。看看 Zend Server GUI,他们似乎这样做了,但没有返回 json 编码数据并从中构建页面。
什么是最好的方法,我应该如何处理特定于检索页面的 javascript?我现在在该页面的 phtml 文件中拥有所有页面特定的 javascript。
我关心的另一件事是如何跟踪打开大量对话框容器并通过 ajax 填充它们时创建的资源。假设我们打开一个对话框,我们得到一个项目列表。如果我们单击该特定项目的另一个模态对话框容器弹出窗口并通过 ajax 填充。但如果主页面从未重新加载,我会发现这变得难以处理。
感觉我不可能是第一个想做 ajax 驱动的 UI 的人,所以在我把自己画到一个角落之前,请指出正确的方向。 ;)
更新:我基本上尝试了各种关于上下文主题的教程以及 Zend 的文档。我想我一定错过了启用一些未记录的功能或其他东西。由于它不起作用,我删除了代码,但在尝试以下代码之前尝试找到我看过的示例。
$ajaxContext = $this->_helper->getHelper('AjaxContext');
$ajaxContext->addActionContext('list', 'html')
->addActionContext('modify', 'html')
->initContext();
我尝试了类似以下的方法
$this->_helper->contextSwitch()
->setContext('html', array(
'suffix' => 'html',
'headers' => array('Content-Type' => 'text/html; Charset=UTF-8'),
)
)
->addActionContext('index', array('html','xml', 'json'))
->setAutoJsonSerialization(true)
->initContext();
我尝试添加其他 ActionContexts 等,但无论如何它们都只是一直呈现正常的 .phtml 文件。
【问题讨论】:
-
inquam,记得将 /format/xxx 添加到查询的末尾,否则上下文帮助程序不会激活。即使对于“普通”XHR,您也需要指定 /format/html
标签: jquery ajax zend-framework