Проблемы с загрузкой данных из Deployd с использованием Angularjs

Я только начинаю изучать программирование и читаю 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

1 ответ

Вам нужно обновить версию деплойда - запустите обновление npm из командной строки в папке установки деплойда - мне пришлось запустить его с помощью командной строки cmd с правами администратора.

Здесь есть хорошие ответы:

Deployd - данные, полученные с помощью AngularJS CORS

Другие вопросы по тегам