AngularJS - 如何返回从GET服务方法返回的JSON,而不管返回的http状态如何

时间:2017-01-26 20:23:23

标签: javascript jquery angularjs json

我有一个AngularJS应用程序,我想提醒或捕获以下两个返回的JSON值的消息,无论是成功还是失败。

出现两个问题。在状态代码500上,当我尝试提醒undefined时,我无法获取返回的JSON的消息值msg。成功后我也无法解析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',
{
});
};

3 个答案:

答案 0 :(得分:1)

在失败条件下,您可以在错误回调函数中访问您的消息

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"];
});

答案 1 :(得分:1)

以下有助于达到预期效果。关键是要使用angularjs承诺。

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

答案 2 :(得分:0)

您的div属性错误。

所以更新一下:

Message

为:

var msg = JSON.parse(createNewUserService.inviteUsers().query()["Message"]);

更新

关于失败条件,如果有响应或响应有效,我们应先检查它。

var msg = JSON.parse(createNewUserService.inviteUsers().query()).Message;