从$ http调用解析AngularJS中的JSon数据

时间:2014-04-20 07:51:20

标签: javascript json angularjs http

我对Web开发和AngularJS都很陌生。我正在尝试编写一个网页,它将根据我服务器上的JSon文件自动更新其信息。我可以得到json数据,但我似乎无法解析进来的数据。我验证了json数据只是为了确保我正确地写它,但每当我在网站上显示它只是显示为单个字符串。我无法访问个人成员。我的工厂和控制器在下面。任何帮助将不胜感激!!

var MyController = function($scope, $log, MyFactory) {
    $scope.notes =[];

function init() {
    MyFactory.getNotes()
        .success(function(notes){
            $scope.notes = JSON.parse(notes);
        })
        .error(function(data, status, headers, config) {
                $log.log(data.error + ' ' + status);
            });
}

    init();

angular.module('MyApp')
    .controller('MyController', MyController);
};

工厂:

    var MyFactory = function($http) {
    var factory = {};
    factory.getNotes = function() {
        return $http.get('/ci/data.json');
    };
return factory;
};

angular.module('MyApp').factory('MyFactory', 
                                    MyFactory);

我承认代码和问题很粗糙,但我刚刚开始。任何有关建筑和风格的额外帮助也将受到赞赏!提前谢谢!

3 个答案:

答案 0 :(得分:6)

  1. 您不需要将响应解析为json。如果源文件为您提供有效的json,则angular知道它的json。

  2. 在您的控制器中,尝试console.log($scope.notes)。如果使用谷歌浏览器,您会在控制台中打印出json结果,并且您知道factory正在运行。

  3. 使用角度forEach来迭代结果以对其执行某些操作。

    angular.forEach($scope.notes, function(note) {
        console.log(note);
    });
    

答案 1 :(得分:0)

您可以使用angular.fromJson(jsondata)来解析http结果。 以前我从http响应中获取了无效的json数据,json数据中有一些"\字符,所以我使用它解析它对我有用,它从我的json数据中删除了所有这些无效字符。

答案 2 :(得分:0)

对于那些可能仍然需要这个的人,Suresh的答案是正确的,但代码是错误的(至少对于Angular 1而言)

因此,在尝试解析数据时,例如:

{"1":{"id":"1","owner":"1","name":"Server","description":"This is my test server.","version":"1.11","type":"0","ip":"test.com","port":"25565"},"2":{"id":"2","owner":"1","name":"Test Server","description":"This is my test server.","version":"1.0","type":"2","ip":"test.com","port":"25565"}

我使用了以下GET请求:

.controller('serversController', function($scope, $http){
  $http.get("/dashboard/api/?action=getServers&key=")
  .then(function(response){
    $scope.servers = response.data;
  });
});

以及以下HTML:

<div ng-repeat="server in servers">
    <p>{{server.id}}</p>
    <p>{{server.name}}</p>
    <p>{{server.version}}</p>
</div>