2014-02-25 45 views
1

我怎樣才能得到Angular的web api返回的錯誤信息。如何從角度的web api獲取錯誤消息?

這是我在拉琴

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

()'' 

有什麼值得我誤差函數變爲只顯示「姓名測試1已被使用」已經得到? 這是Angular http post。

 $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);     
     }); 

回答

1

您從服務器獲得的響應非常令人驚訝。它看起來不像一個有效的json字符串。模型狀態中的第一個項目沒有標識。

{"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."]} 

在這最後例如,您可以通過迭代訪問錯誤消息。模型步驟

+0

感謝Pascel ..你的答案是偉大的。 – lawphotog

1
ModelState[""][0] 

會給你只是消息

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;