一个 JSON 文件未被加载到浏览器中。

6

我是angularjs的新手,正在学习angular控制器和模型。这是我的JavaScript模型代码:

    var testApp = angular.module('testApp', []);

testApp.controller('testCtrl', function testCtrl($scope ,$http) {

  $http.get('test.json').success(function ($data){

   $scope.artists = $data;

  });

});

网页已经加载,但出现了异常。我在Windows 7上使用的是Firefox浏览器。

[异常... "拒绝访问受限制的URI" 代码: "1012" nsresult: "0x805303f4 >.>(NS_ERROR_DOM_BAD_URI)" 位置: "file:///....// angular.min.js Line: 72"]

有人知道解决方案吗? 我只需要在本地机器上使用,不需要在服务器上运行。


http://stackoverflow.com/questions/19116070/access-json-file-in-angular-js - Donal
你需要在服务器上托管JSON文件。由于安全原因,从文件加载JSON文件受到限制。 - Donal
我认为火狐浏览器的安全性导致了这个问题。 我认为你是一名学生,那你在本地做这个的目的是什么。 尝试另一个浏览器。 - Prathibha Chiranthana
Donal谢谢你,但我该如何修复它? - madu Premakeerthi
这只是用于教育的,但如果它能够修复问题那就很好。 - madu Premakeerthi
你只需要将你的应用程序托管在像Apache或Node.js这样的服务器上。你应该安装WAMP http://www.wampserver.com/ 或者Node http://nodejs.org/。 - Polochon
3个回答

1
你需要对Angular控制器语法进行微小的更改。
testApp = angular.module('testApp', []);
testApp.controller('testCtrl', function($scope, $http) {
    $http.get('test.json').success(function($data) {
       $scope.artists = $data;
    });
});

在定义控制器时,不想在函数旁边给出控制器名称。所以我把它移除了。 - user2550916
所以,这不是对问题的回答。顺便说一下,在调试时控制器的名称可能会很有用。 - runTarm
其实我觉得问题不是代码的问题,可能是浏览器导致的影响。无论如何,还是谢谢您。 - madu Premakeerthi

1

如上面的评论中已经提到的,这很可能是由于Firefox的安全性阻止您的代码访问本地文件系统中的文件。

您可以通过更改浏览器配置来配置Firefox以访问本地内容。

在Firefox中:

  • 转到about:config
  • 找到security.fileuri.strict_origin_policy参数
  • 将其设置为false

0

通过禁用网络安全来在Chrome中检查一次,如果出现相同的错误,则可能是JSON文件URL的问题。

阅读如何加载本地JSON文件?

您可能会找到问题所在。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接