Обычно, когда исключение выдается, Ошибочный контроллер принимает управление и отображает ошибочную страницу с обычным общим заголовком и нижним колонтитулом.
Это поведение не требуется в запросе Ajax. Поскольку в случае ошибки, целая страница HTML отправляется. И в случаях, где я непосредственно загружаю контент http ответа в отделении, это еще более нежелательно.
Вместо этого в случае запроса Ajax, я просто хочу получить 'фактическую ошибку', брошенную исключением.
Как я могу сделать это?
Я думаю, один грязный путь мог быть: установите var в запросе ajax и процессе соответственно. Не хорошее решение.
если вы используете помощники действий 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;
}
}
Оттуда вы должны либо передать параметр format = json, который каждый AJAX запросить или настроить цепочку маршрутизации, которая автоматически добавляет ее.
Для «немного» более безопасной настройки вы можете использовать ajaxContext в качестве помощника, и только запросы с заголовком XMLHttpRequest
будут обслуживаться json.