如何在Angular中获取web api返回的错误消息。
这就是我在fiddler中所得到的
{"Message":"The request is invalid.","ModelState":{"":["Name test1 is already taken."]}}
()''
我在错误功能中更改了什么才能显示'名称test1已被采用'? 这是Angular http帖子。
$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);
});
答案 0 :(得分:1)
您从服务器获得的响应非常令人惊讶。它看起来不像一个有效的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."}
或者,如果您需要一次返回多条错误消息:
{"Message":"The request is invalid.","ModelState": ["Name test1 is already taken."]}
在最后一个示例中,您可以通过迭代error.ModelStage
来访问消息答案 1 :(得分:1)
ModelState[""][0]
会给你一条消息
答案 2 :(得分: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;