9

我正在尝试处理 Ajax 中的错误。为此,我只是想在 Symfony中重现这个SO 问题。

$.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 响应?

如果有人对此很熟悉,我将非常感谢您的帮助。

非常感谢

4

1 回答 1

14

在您的操作中,您可以返回一个Symfony\Component\HttpFoundation\Response对象,您可以使用该setStatusCode方法或第二个构造函数参数来设置 HTTP 状态代码。当然,如果您愿意,也可以将响应的内容作为 JSON(或 XML)返回:

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(感谢 thecatontheflat 的提示)。使用此类的优点是它还会发送正确的Content-type标头。例如:

public function ajaxAction()
{
    return new JsonResponse(array('message' => ''), 419);
}
于 2012-09-12T10:21:00.167 回答