【问题标题】:"Not well-formed" firefox error while looping through JSON file with AngularJS使用 AngularJS 循环遍历 JSON 文件时出现“格式不正确”的 firefox 错误
【发布时间】:2013-09-21 22:11:54
【问题描述】:

JSON文件结构如下:

{
    "meta": {
        "limit": 20, 
        "next": null, 
        "offset": 0, 
        "previous": null, 
        "total_count": 2
    }, 
    "objects": [
        {
            "description": "Lorem ipsum dolor sit amet ....Lorem ipsum dolor sit amet ....Lorem ipsum dolor sit amet ....", 
            "end": "2013-09-09T15:37:24", 
            "id": 1, 
            "name": "Lorem ipsum dolor sit amet ....Lorem ipsum dolor sit amet", 
            "resource_uri": "/api/task/1/", 
            "start": "2013-09-09T15:37:23"
        },
        {
            "description": "Here goes description :) Here goes description :) Here goes description :) ", 
            "end": "2013-09-11T15:58:01", 
            "id": 2, 
            "name": "Some other task", 
            "resource_uri": "/api/task/2/", 
            "start": "2013-09-11T15:58:00"
        }
    ]
}

我试图像这样循环遍历它:

<!DOCTYPE html>
<html lang="en" ng-app id="ng-app">
    <head>
        <title>Angular studies</title>
        <meta charset="UTF-8" />
        <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
        <script>
        function PostsCtrlAjax($scope, $http) {
        $http({method: 'POST', url: 'posts.json'}).success(function(data) {
                $scope.tasks = data;
            });
        }
        </script>
    </head>
    <body>
        <div id="ng-app" ng-app ng-controller="PostsCtrlAjax"> 

        <div ng-repeat="task in tasks">
           <a href='{{task.id}}'>{{task.name}}</a>
        </div>

        </div>
    </body>
</html>

为此,我在 Firefox 中收到“格式不正确”错误。你能告诉我一个解决这个问题的方法吗?

【问题讨论】:

  • 我对Angular不熟悉,但是你需要先解析JSON才能使用它吗?
  • 嗯,我尝试使用 Newtonsoft 对您的 json 进行序列化和反序列化,效果很好。如果你喜欢我会发布我的代码。

标签: javascript json firefox angularjs


【解决方案1】:

这确实是有效的 JSON。问题是你试图迭代tasks,但实际上想要迭代tasks.objects

for (var i=0;i<tasks.objects.length;i++) {
    console.log(tasks.objects[i].id);
    console.log(tasks.objects[i].name);
}

输出

1 
Lorem ipsum dolor sit amet ....Lorem ipsum dolor sit amet 
2 
Some other task 

我不熟悉角度语法,但我想这是你想要/真正尝试做的:

<div ng-repeat="task in tasks.objects">

【讨论】:

    猜你喜欢
    • 2010-10-15
    • 2019-02-18
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多