簡體   English   中英

AngularJS-如何捕獲從GET服務方法返回的JSON,而不管返回的HTTP狀態如何

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM