Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 安格拉斯赢得';无法从外部json文件读取_Javascript_Json_Angularjs - Fatal编程技术网

Javascript 安格拉斯赢得';无法从外部json文件读取

Javascript 安格拉斯赢得';无法从外部json文件读取,javascript,json,angularjs,Javascript,Json,Angularjs,嗨,我正在尝试让我的angularJs站点从位于js/data.JSON中的外部JSON文件读取。只有当json文件在控制器脚本中时,它才起作用……但是当我将其删除到data.json时……它不会读取它吗?当我在搜索栏上输入任何东西时…什么都不会出现。仅当我在控制器中包含脚本时,它才起作用,如: personApp.controller('PersonListCtrl', function ($scope, $http) { $http.get('data/persons.json').

嗨,我正在尝试让我的angularJs站点从位于js/data.JSON中的外部JSON文件读取。只有当json文件在控制器脚本中时,它才起作用……但是当我将其删除到data.json时……它不会读取它吗?当我在搜索栏上输入任何东西时…什么都不会出现。仅当我在控制器中包含脚本时,它才起作用,如:

personApp.controller('PersonListCtrl', function ($scope, $http) {
    $http.get('data/persons.json').success(function (data) {
        $scope.persons = data;
    });
    $scope.persons = [{
        "name": "Mike Doe"
    }, {
        "name": "Jhon Doe"
    }, {
        "name": "Sam Doe"
    }, {
        "name": "Sam Doe"
    }, ]
});
为了简单起见,我只希望这两个文件是分开的。谢谢

我的控制器代码中有错误吗

谢谢

<body ng-app="personApp">
    <div class="container">
        <header></header>
        <div ng-controller="PersonListCtrl">
            <div class="bar">Search:
                <input ng-model="query">
            </div>
            <ul class="" ng-show="query">
                <li ng-repeat="person in persons | filter:query">{{person.name}}</li>
            </ul>
        </div>
    </div>
</body>
这是位于js/data.json中的外部json文件

 [{
    "name": "Mike Doe"
}, {
    "name": "Jhon Doe"
}, {
    "name": "Sam Doe"
}, {
    "name": "Sam Doe"
}, ]
如果我使用以下命令,JSON将不会解析:

personApp.controller('PersonListCtrl', function ($scope, $http) {
    $http.get('data/persons.json').success(function (data) {
        $scope.persons = JSON.parse(data);
    });
});
我在浏览器控制台上不断遇到一个错误:我认为这与控制器中的JSON解析有关

 SyntaxError: Unexpected token o
    at Object.parse (native)
    at http://172.31.1.17/js/controllers/controllers.js:229:31
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.min.js:80:486
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.min.js:111:425
    at k.$eval (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.min.js:125:305)
    at k.$digest (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.min.js:122:398)
    at k.$apply (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.min.js:126:58)
    at m (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.min.js:81:275)
    at N (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.min.js:85:364)
    at XMLHttpRequest.w.onload (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.min.js:86:394)

我认为在将数据分配给$scope.persons之前,需要对其进行解析

将控制器代码更改为

personApp.controller('PersonListCtrl', function ($scope, $http) {
    $http.get('data/persons.json').success(function (data) {
        $scope.persons = JSON.parse(data);
    });
});
您的json数据中有错误

[{
“姓名”:“迈克·多伊”
}, {
“名称”:“Jhon Doe”
}, {
“姓名”:“山姆·多伊”
}, {
“姓名”:“山姆·多伊”

}]; // 我认为您需要对它进行两次解析,$http.get命令已经解析了,因此不需要使用JSON.parse(数据);再次


这将解决您的令牌O错误

谢谢。我根据您的建议进行了更改,但控制台中出现错误?表示:$scope.persons=JSON.parse(data);}有错误;SyntaxError:Object.parse(本机)处出现意外标记o,只需删除数组中多余的分号。我已删除数组中的分号。仍然有错误。console.log(数据)是否返回字符串或对象?谢谢,我已经完成了上述操作,但仍然有错误。谢谢,这是一个很好的站点。看来我的JSON文件还可以。我认为是控制器造成了问题/
personApp.controller('PersonListCtrl', function ($scope, $http) {
    $http.get('data/persons.json').success(function (data) {
        $scope.persons = JSON.parse(data);
    });
});
[{
    "name": "Mike Doe"
}, {
    "name": "Jhon Doe"
}, {
    "name": "Sam Doe"
}, {
    "name": "Sam Doe"
}]; // <-- REMOVE SEMICOLON