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

Sak*_*o73 5 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");
            });
}
Run Code Online (Sandbox Code Playgroud)

请求的截图: 在此输入图像描述

JB *_*zet 6

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