if ($this->getRequest()->isXmlHttpRequest()) {
$this->_helper->layout->disableLayout();
$ajaxContext = $this->_helper->getHelper('AjaxContext');
$ajaxContext->addActionContext('view', 'html');
$ajaxContext->initContext();
}
这实际上是如何工作的......我的ajax获取页面是local.maker/profile/check
我让ajax工作正常,但我不知道从上面编辑什么...
$ajaxContext->addActionContext('???', 'html');
ps ..我正在申请一个json
答案 0 :(得分:1)
我使用以下代码来使用AJAX上下文帮助器。
在你的控制器中创建一个preDispatch方法来设置你的上下文:
public function preDispatch()
{
$this->_helper->ajaxContext()
->addActionContext('index', array('json', 'html'))
->addActionContext('anotheraction', 'json')
->initContext();
}
然后在你的动作方法中使用:
public function indexAction()
{
if ($this->_helper->ajaxContext()->getCurrentContext() == 'json') {
// ajax code here
} else {
// non ajax code here
}
}
同样在您的ajax请求中,您必须使用变量格式来设置当前上下文,例如
http://www.mydomain.com/index/format/json
请求json响应。
注意:上下文切换器会自动禁用布局和视图,控制器中设置的任何视图变量都会自动编码为json字符串并发送。
我希望这会有所帮助
亲切的问候
加里
答案 1 :(得分:0)
请仔细阅读示例。它拥有您正在寻找的一切。
addActionContext( <action>, <format>);
可以请求comment / process / format / json或通过查询变量。参见示例。