使用Angularjs从Deployd加载数据的问题

时间:2014-10-17 14:38:31

标签: angularjs xampp deployd

我刚刚开始学习一些编程,我正在阅读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中的页面 enter image description here

1 个答案:

答案 0 :(得分:1)

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

这里有很好的答案:

Deployd - Data retrieved via AngularJS CORS