Zend Framework:如何处理 Ajax 请求中的异常?

2024-01-24

通常,当引发异常时,错误控制器会接受命令并显示带有常规公共页眉和页脚的错误页面。

Ajax 请求中不需要这种行为。因为如果发生错误,整个 html 页面都会被发送过来。如果我直接在 div 中加载 http 响应的内容,则这是更不受欢迎的。

相反,在 Ajax 请求的情况下,我只想接收异常抛出的“实际错误”。

我怎样才能做到这一点?

我认为,一种肮脏的方式可能是:在 ajax 请求中设置一个 var 并进行相应的处理。这不是一个好的解决方案。


如果您使用contextSwitch or ajaxContext操作助手来编码您的错误(可能关闭autoJsonSerialization)您可以将错误作为 JSON / XML 对象传递回来。

http://framework.zend.com/manual/en/zend.controller.actionhelpers.html#zend.controller.action helpers.context 开关 http://framework.zend.com/manual/en/zend.controller.actionhelpers.html#zend.controller.actionhelpers.contextswitch

class Error_Controller extends Zend_Controller{
    public function errorAction(){
        $contextSwitch = $this->_helper->getHelper('contextSwitch');
        $contextSwitch->addActionContext($this->getRequest()->getActionName(),'json')
            ->initContext();
        $errors = $this->_getParam('error_handler');
        $this->view->exception = $errors->exception;
    }
}

从那里,您必须传递每个 AJAX 请求的 format=json 参数,或者设置一个自动附加它的路由链。

对于“稍微”更安全的设置,您可以使用 ajaxContext 作为您的助手,并且仅请求具有XMLHttpRequest标头将提供 json。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Zend Framework:如何处理 Ajax 请求中的异常? 的相关文章

随机推荐