为什么POST响应204(无内容)会触发Angularjs错误功能?

时间:2015-11-11 16:54:28

标签: angularjs

我有一个使用$http.post()进行Web服务调用的Angularjs应用程序。它调用的方法具有void返回类型,并生成204(无内容)响应代码。这将进入.then()回调中定义的错误函数,并打印"找不到元素"在日志中。

如果我从方法中返回任何内容,它将返回正常的200响应代码。

为什么成功代码会触发错误功能?

所要求的代码:

function myFn(inputData) {
    var d = { data: inputData };
    $http.post("../api/my/serverFn", d)
        .then(
            function(response) {
                $rootScope.AddMsg("Success");
            },
            function(response) {
                 // The 204 response goes here.
                 $rootScope.AddMsg("Error");
            });
}

请求的截图: enter image description here

1 个答案:

答案 0 :(得分:6)

AngularJS本身并未将204响应视为错误。调查显示,如果收到的响应状态为204,则堆栈中的http拦截器拒绝承诺,将成功响应转为错误。