2015-05-22 54 views
1

你好我收到来自服务器以下响应阅读使用Javascript /角

{ 
    "Application1": { 
     "status": "SUCCESS", 
     "comment": "A123456 added successfully to Application" 
    }, 
    "Application2": { 
     "status": "SUCCESS", 
     "comment": "B67890 added successfully to Application" 
    } 
} 

我需要根据状态来显示一个消息,我们正在使用的角度和JavaScript我通过我无法循环的JSON值和阅读一样,任何帮助,将不胜感激

+1

添加显示如何以及循环的代码片段很不错吗?这样才能明白你的问题到底是什么。 – Sagar

回答

1

的simpliest版本,我可以想像:

<script> 
var json = {"Application1":{"status":"SUCCESS","comment":"A123456 added successfully to Application"},"Application2":{"status":"SUCCESS","comment":"B67890 added successfully to Application"}}; 

for(var t in json) 
    console.log(json[t]['status']); 
</script> 
+0

为我工作简单和preicisily我正在寻找 – user1767986

+0

通常不会忘记添加hasOwnProperty检查,同时迭代使用for循环,否则原型链也将被检查:) – user1707873

1

您可以通过解析字符串作为JSON读值:

var obj = JSON.parse('{"Application1":{"status":"SUCCESS","comment":"A123456 added successfully to Application"},"Application2":{"status":"SUCCESS","comment":"B67890 added successfully to Application"}}') 

然后你就可以得到访问值属性:

obj.Application1.status 
0

首先检查响应是JSON对象还是字符串。如果是字符串,则将其解析为JSON。然后你可以循环它。

使用下列功能

isJson(your_response); 

将返回JSON对象或null。

var whatIsIt = function (object) { 
    var stringConstructor = "test".constructor; 
    var arrayConstructor = [].constructor; 
    var objectConstructor = {}.constructor; 

    if (object === null) { 
     return "null"; 
    } 
    else if (object === undefined) { 
     return "undefined"; 
    } 
    else if (object.constructor === stringConstructor) { 
     return "String"; 
    } 
    else if (object.constructor === arrayConstructor) { 
     return "Array"; 
    } 
    else if (object.constructor === objectConstructor) { 
     return "Object"; 
    } 
    else { 
     return "don't know"; 
    } 
}; 

var isJson = function(o1) 
    { 
     // Validate JSON strings 
     var json_object = null; 
     var type = whatIsIt(o1); 
     switch(type) 
     { 
      case "String": 
       try{ 
        json_object = JSON.parse(o1); 
       }catch (e){ 
        return null; 
       } 
       break; 
      case "Object": 
       try { 
        JSON.stringify(o1); 
        json_object = o1; 
       }catch (e) { 
        return null; 
       } 
       break; 
     } 
     return json_object; 
    }; 
0

假设与服务器的通信是在一个单独的角度服务进行,你需要使用NG重复和NG-IF的指令, 请在这里找到的jsfiddle: http://jsfiddle.net/2ju3c6tc/1/

var module = angular.module("myModule", []); 
 

 
module.service('serverCommunicator', ['$http', 
 
    function($http) { 
 
    //code to get the data from the server 
 
    //server Data would hold the JSON object after the AJAX req,however, it is assigned manually over here 
 
    this.serverData = { 
 
     "Application1": { 
 
     "status": "SUCCESS", 
 
     "comment": "A123456 added successfully to Application" 
 
     }, 
 
     "Application2": { 
 
     "status": "SUCCESS", 
 
     "comment": "B67890 added successfully to Application" 
 
     } 
 
    }; 
 
    } 
 
]); 
 

 
module.controller('myController', ['$scope', 'serverCommunicator', 
 
    function($scope, serverCommunicator) { 
 
    $scope.serverData = serverCommunicator.serverData; 
 

 
    } 
 
]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script> 
 
<div ng-app="myModule"> 
 
    <div ng-controller="myController as myCont"> 
 
    <div ng-repeat="dataElement in serverData"> 
 
     <div ng-if="dataElement.status=='SUCCESS'"> 
 
     This is success message :{{dataElement.comment}} 
 
     </div> 
 
     <div ng-if="dataElement.status=='FAILURE'"> 
 
     This is failure message {{dataElement.comment}} 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

+0

也许,这是从你的要求矫枉过正我看到的答案:) – user1707873