简体   繁体   English

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

[英]AngularJS - How do I capture JSON returned from a GET service method regardless of http status returned

I have an AngularJS app that I want to alert or capture the message of the following two returned JSON values, either on success or failure. 我有一个AngularJS应用,我想在成功或失败时向以下两个返回的JSON值发出警报或捕获消息。

Two problems occur. 发生两个问题。 On status code 500 I can not get the Message value of the returned JSON I get undefined when I try to alert msg . 在状态码500上,我无法获取返回的JSON的Message值,而当我尝试向msg发出警报时却无法undefined On success I can not parse the JSON either. 成功后,我也无法解析JSON。

Message in Network console 网络控制台中的消息

GET inviteUsers 500 Internal Server Error

{"Message":"Users are not available"}

What do I need to do to make this work? 我需要做些什么才能使这项工作?

JSON on failure - returns status code 500 失败时返回JSON-返回状态码500

{"Message":"Users are not available"}

JSON on success JSON成功

{"Message": "Invitations sent successfully"}

Controller Method 控制器方式

$scope.inviteUsers = function(){
  var msg = JSON.parse(createNewUserService.inviteUsers().query()["Message"]);
}

Service Method (Method GET) 服务方法(方法GET)

var _inviteUsers = function(){

  return $resource(serviceBase + 'inviteUsers',
{
});
};

In fail condition you can access your message in error callback function 在失败情况下,您可以在错误回调函数中访问消息

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

The following helped achieve the desired result. 以下内容有助于达到预期效果。 The key was to use angularjs promises. 关键是使用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);
  });
}

You're getting the Message property wrong. 您将Message属性弄错了。

So update this: 因此更新此:

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

to: 至:

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

Update: 更新:

Regarding fail conditions, we should check it first if there's a response or the response is valid. 关于失败条件,我们应该首先检查它是否存在响应或响应是否有效。

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.

相关问题 我如何从带有 javascript 的表单返回 json? - how do i get json returned from a form with javascript? AngularJS:如何缓存从$ http调用返回的json数据? - AngularJS: How can I cache json data returned from $http call? 从$ http返回的AngularJS对象-如何获取键/值对 - AngularJS object returned from $http - how to get key/value pairs AngularJS从HTTP.JSONP返回JSON中获取语法错误 - AngularJS Getting Syntax Error in Returned JSON from HTTP.JSONP 如何捕获通过HTTP GET的api调用返回的Array对象? - How can I capture the Array object returned by an api call through HTTP GET? 如何限制FireBase firestore get()方法返回的记录? - How do I limit records returned by FireBase firestore get() method? AngularJS:如何从工厂获取返回值 - AngularJS : How to get returned value from factory Angularjs http.get失败(但是我看到返回了数据) - Angularjs http.get failure (but I see the data was returned) 如何缓存或存储从$ http调用响应返回的项目文件夹JSON对象? AngularJS - How to cache or store in project folder JSON object returned from $http call response? AngularJS 如何访问从 AJAX 请求返回的 JSON 数据? - How do I access JSON data returned from an AJAX request?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM