und*_*ack 5 php ajax error-handling zend-framework
通常,当引发异常时,错误控制器将执行命令并显示带有常规公共页眉和页脚的错误页面。
Ajax请求中不需要此行为。因为如果发生错误,整个html页面都会被发送出去。而且,如果我直接在div中加载http响应的内容,这甚至是多余的。
相反,在Ajax请求的情况下,我只想接收异常引发的“实际错误”。
我怎样才能做到这一点?
我认为,一种肮脏的方式可能是:在ajax请求中设置var并进行相应处理。不是一个好的解决方案。
如果您使用 或contextSwitch操作ajaxContext助手来编码您的错误(可能关闭autoJsonSerialization),您可以将错误作为 JSON / XML 对象传递回来。
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;
}
}
Run Code Online (Sandbox Code Playgroud)
从那里,您必须传递每个 AJAX 请求的 format=json 参数,或者设置一个自动附加它的路由链。
对于“稍微”更安全的设置,您可以使用 ajaxContext 作为助手,并且只有具有XMLHttpRequest标头的请求才会提供 json。