0

我刚刚开始学习一些编程,并且正在阅读 Adam Freeman 的 Pro AngularJS。按照作者在我自己创建的书中展示的示例之一。我有一个 Xampp 服务器,数据在 Deployd 中。两台服务器都位于 Virtual XP 机器 (VMWare) 中。数据 ( http://192.168.1.40:5500/cars) 如下所示:

[{
"brand": "Honda",
"color": "Blue",
"price": 20000,
"year": 2010,
"id": "95d78d0090f3ab62"
}, {
"brand": "Kia",
"color": "Green",
"price": 10000,
"year": 2013,
"id": "47e180e828b2297a"
}, {
"brand": "Toyota",
"color": "Black",
"price": 22000,
"year": 2013,
"id": "19ab0a96f80c29ab"
}, {
"brand": "Buick",
"color": "Silver",
"price": 25000,
"year": 2012,
"id": "a9a217f2a7381994"
}, {
"brand": "Ferrari",
"color": "Red",
"price": 250000,
"year": 2014,
"id": "0abb8a0179f95a17"
}, {
"brand": "Porche",
"color": "Blue",
"price": 60000,
"year": 2012,
"id": "f76556eb6aa7981e"
}]

我在访问在浏览器中输入 URL 的数据时没有任何问题。

相关的 HTML 如下所示:

 <tr ng-repeat="item in data | orderBy:'brand' ">
            <td>{{item.brand}}</td>
            <td>{{item.color}}</td>
             <td>{{item.year}}</td>
            <td>{{item.price | currency}}</td>

        </tr>

我的 AngularJS 代码如下所示:

angular.module("demo")

.constant("dataUrl", "http://192.168.1.40:5500/cars")
.controller("demoCtrl", function ($scope, $http, dataUrl) {
//$http.defaults.useXDomain = true;
    $scope.data = {};
    $http.get(dataUrl)
        .success(function (data) {

            $scope.data = data;
        })
        .error(function (error) {
            $scope.data.error = error;
        });
  }); 

这是我遇到的问题。当我在 IE9 中访问该页面时,它运行良好。当我使用 FireFox 时,什么都没有显示,也没有错误或什么都没有。在 Chrome 中,数据不会加载,它给了我这个错误:

XMLHttpRequest cannot load http://192.168.1.40:5500/cars. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.1.40' is therefore not allowed access.

正如我所提到的,我对此很陌生,令我感到非常困惑的是,它在 IE 中工作,而不是在其他浏览器中工作。我还使用“json”文件而不是部署数据尝试了相同的代码,它适用于所有浏览器。知道我应该在这里做什么吗?谢谢!

IE9中的页面 在此处输入图像描述

4

1 回答 1

1

您需要更新已部署的版本-从已部署安装文件夹中的命令提示符运行 npm update - 我必须使用具有管理员权限的 cmd 提示符运行它。

这里有很好的答案:

已部署 - 通过 AngularJS CORS 检索的数据

于 2014-12-05T16:53:31.897 回答