Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何在angular中从web api获取错误消息?_Angularjs_Asp.net Web Api - Fatal编程技术网

Angularjs 如何在angular中从web api获取错误消息?

Angularjs 如何在angular中从web api获取错误消息?,angularjs,asp.net-web-api,Angularjs,Asp.net Web Api,如何获取web api在Angular中返回的错误消息 这就是我在《小提琴手》中得到的 {"Message":"The request is invalid.","ModelState":{"":["Name test1 is already taken."]}} ()'' 我在error函数中做了什么更改,以显示“Name test1已被采用”? 这是一篇文章 $http({ method: 'POST', url: 'ap

如何获取web api在Angular中返回的错误消息

这就是我在《小提琴手》中得到的

{"Message":"The request is invalid.","ModelState":{"":["Name test1 is already taken."]}}

 ()''
我在error函数中做了什么更改,以显示“Name test1已被采用”? 这是一篇文章

        $http({
            method: 'POST',
            url: 'api/Account/Register',
            data: { 'UserName': user.username, 'Password': user.password, 'ConfirmPassword': user.confirmpassword, 'Email': user.email },
        })
        .success(function () {
            toastr.success('successfully registered. ');                        
        })
        .error(function (error) {           
            toastr.error('error:' + error);                
        });

您从服务器得到的响应非常令人惊讶。它看起来不像一个有效的json字符串。处于模型状态的第一项没有id

{"Message":"The request is invalid.","ModelState":{"":["Name test1 is already taken."]}}
应该是这样的:

{"Message":"The request is invalid.","ModelState":{"message":["Name test1 is already taken."]}}
然后你就可以用

error.ModelState.message[0]
虽然错误响应看起来太复杂,但它应该可以工作。为什么错误消息在数组中?难道不可能像这样简化响应:

{"Message":"The request is invalid.","ModelState":{"message":"Name test1 is already taken."}} 

或者,如果需要同时返回多条错误消息:

{"Message":"The request is invalid.","ModelState": ["Name test1 is already taken."]}  
在最后一个示例中,您可以通过迭代error.ModelStage来访问消息

ModelState[""][0] 

这只会给你一个信息

这段代码对我有用:

$scope.message = response.statusText + "\r\n";
if (response.data.modelState) {
    for (var key in response.data.modelState) {
        $scope.message += response.data.modelState[key] + "\r\n";
    }
}
if (response.data.exceptionMessage)
    $scope.message += response.data.exceptionMessage;
$scope.message = response.statusText + "\r\n";
if (response.data.modelState) {
    for (var key in response.data.modelState) {
        $scope.message += response.data.modelState[key] + "\r\n";
    }
}
if (response.data.exceptionMessage)
    $scope.message += response.data.exceptionMessage;