我正在尝试处理Ajax中的错误。为此,我只是想在Symfony中重现这个SO question。
$.ajaxSetup({
error: function(xhr){
alert('Request Status: ' + xhr.status + ' Status Text: ' + xhr.statusText + ' ' + xhr.responseText);
}
});
但是我无法弄清楚控制器中的代码在Symfony2中会是什么样子来触发header('HTTP/1.0 419 Custom Error');
。是否可以附加个人消息,例如You are not allowed to delete this post
。我是否也需要发送JSON响应?
如果有人熟悉这一点,我将非常感谢你的帮助。
非常感谢
答案 0 :(得分:14)
在您的操作中,您可以返回Symfony\Component\HttpFoundation\Response
对象,您可以使用setStatusCode
方法或第二个构造函数参数来设置HTTP状态代码。当然,如果您希望:
public function ajaxAction()
{
$content = json_encode(array('message' => 'You are not allowed to delete this post'));
return new Response($content, 419);
}
或
public function ajaxAction()
{
$response = new Response();
$response->setContent(json_encode(array('message' => 'You are not allowed to delete this post'));
$response->setStatusCode(419);
return $response;
}
更新:如果您使用的是Symfony 2.1,则可以返回Symfony\Component\HttpFoundation\JsonResponse
的实例(感谢该软件提示)。使用此类的优点是它还将发送正确的Content-type
标头。例如:
public function ajaxAction()
{
return new JsonResponse(array('message' => ''), 419);
}