如何使用AngularJS访问错误响应主体

时间:2013-05-01 17:04:46

标签: error-handling angularjs response payload

我的头脑旋转导致以下问题。我正在使用AngularJS访问我的webservice(在我的localhost:4434上运行),如果出现问题,webservice会发送一个包含json正文的响应400,其中包含一条消息,告诉你究竟出了什么问题。

问题是我无法访问客户端上的消息?几乎就好像它永远不会到达客户端? (事实并非如此,我已经确认它已经到达客户端了)这是我在客户端站点上使用的角度代码。

$scope.create = function() {
    $http.post('http://localhost:4434/scrapetastic/foo', $scope.bar).
        success(function(data, status, headers, config) {
            console.log("Call to log: "+status);
            console.log("Call to log: "+data);
        }).
        error(function(data, status) {
            console.log("Error|Data:"+data);
            console.log(status);
        });
}

如果我提交格式错误的数据,则会生成相应的错误响应,但正如我所说的......不知怎的,我无法访问响应正文中包含的消息。这就是我得到的:

Trace from firebug

我已经尝试了各种各样的事情,但现在却被严重困住了......也许有人知道如何访问响应的有效负载或至少接下来要做什么?我也在处理CORS,也许它与此有关。

谢谢!

1 个答案:

答案 0 :(得分:0)

我会在这里猜测一下,并说你的问题是XSS问题。

您不仅没有数据变量,而且从我的屏幕截图中可以看出status == 0

您的屏幕截图也显示Origin: http://localhost,这使得此请求被视为XSS(因为端口不同)。这可以解释为什么状态为0。

修改:您可以使用jsonp来解决问题。