我刚刚开始学习一些编程,我正在阅读Adam Freeman的Pro AngularJS。以下作者在书中展示的一个例子我创建了自己的。我有一个Xampp服务器,数据在Deployd。两台服务器都在虚拟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”文件而不是Deployd数据尝试相同的代码,它适用于所有浏览器。知道我该怎么办?谢谢!
IE9中的页面
答案 0 :(得分:1)
您需要更新 deployd 的版本 - 从deployd安装文件夹中的命令提示符运行npm update - 我必须使用具有管理员权限的cmd提示符运行它。
这里有很好的答案: