[英]AngularJS - How do I capture JSON returned from a GET service method regardless of http status returned
我有一個AngularJS應用,我想在成功或失敗時向以下兩個返回的JSON值發出警報或捕獲消息。
發生兩個問題。 在狀態碼500上,我無法獲取返回的JSON的Message值,而當我嘗試向msg
發出警報時卻無法undefined
。 成功后,我也無法解析JSON。
網絡控制台中的消息
GET inviteUsers 500 Internal Server Error
{"Message":"Users are not available"}
我需要做些什么才能使這項工作?
失敗時返回JSON-返回狀態碼500
{"Message":"Users are not available"}
JSON成功
{"Message": "Invitations sent successfully"}
控制器方式
$scope.inviteUsers = function(){
var msg = JSON.parse(createNewUserService.inviteUsers().query()["Message"]);
}
服務方法(方法GET)
var _inviteUsers = function(){
return $resource(serviceBase + 'inviteUsers',
{
});
};
在失敗情況下,您可以在錯誤回調函數中訪問消息
var msg;
var inviteUsers = createNewUserService.inviteUsers().query();
inviteUsers.$promise.then(function(data) {
// success handler
msg = JSON.parse(data)["Message"];
}, function(error) {
// error handler
msg = JSON.parse(error)["Message"];
});
以下內容有助於達到預期效果。 關鍵是使用angularjs promises。
var msg;
$scope.inviteUsers = function(){
var inviteUsers = createNewUserService.inviteUsers().query();
inviteUsers.$promise.then(function(data){
msg = JSON.parse(data).Message;
notify(msg);
},
function(error){
msg = "No invitations sent";
notify(msg);
});
}
您將Message
屬性弄錯了。
因此更新此:
var msg = JSON.parse(createNewUserService.inviteUsers().query()["Message"]);
至:
var msg = JSON.parse(createNewUserService.inviteUsers().query()).Message;
更新:
關於失敗條件,我們應該首先檢查它是否存在響應或響應是否有效。
var msg = "Users are not available";
var resp = createNewUserService.inviteUsers().query();
if(resp)
msg = JSON.parse(resp).Message;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.