zend getrequest ajax

时间:2011-05-27 10:11:42

标签: php zend-framework

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

2 个答案:

答案 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)

请仔细阅读示例。它拥有您正在寻找的一切。

http://framework.zend.com/manual/en/zend.controller.actionhelpers.html#zend.controller.actionhelpers.contextswitch.ajaxcontext

addActionContext( <action>, <format>);

可以请求comment / process / format / json或通过查询变量。参见示例。