@studio7am

Angular.js — Возможно ли брать данные из json файла по url?

Недавно начал изучать angular и, как и многие, начал с учебника на angular.ru. В учебнике шаг за шагом объясняют как вывести список телефонов с описанием в html из json файла. (PhonecatApp).

var phonecatApp = angular.module('phonecatApp', []);
                 phonecatApp.controller('PhoneListCtrl', function ($scope, $http) {
                $http.get('phones/phones.json').success(function(data) {
                $scope.phones = data;
              });
            $scope.orderProp = 'age';
             });


Этот код в контроллере с помощью сервиса $http извлекает title и body из json файла, который лежит рядом в папке phones/phones.json и выводит его в html.

Вопрос. Возможно ли брать данные из json файла который лежит не локально, а например по url?
Для эксперимента написал простую rails app которая генерирует json https://secret-coast-8851.herokuapp.com/phones.json

И попробовал так:

var phonecatApp = angular.module('phonecatApp', []);
                 phonecatApp.controller('PhoneListCtrl', function ($scope, $http) {
                $http.get('https://secret-coast-8851.herokuapp.com/phones.json ').success(function(data) {
                $scope.phones = data;
              });
            $scope.orderProp = 'age';
             });


Но ничего не получилось. По факту то и там и там json файл. Структура файла одинаковая. Почему не получается? Есть варианты. Подскажите - буду благодарен.
  • Вопрос задан
  • 6133 просмотра
Решения вопроса 1
buurz
@buurz
Как уже сказали необходимо использовать jsonp. И не забываем про JSON_CALLBACK
У меня в приложении используется во так:
$http.jsonp(url+'&callback=JSON_CALLBACK') # url = Ваш url
.success(data)->
 #some code
.error(data) ->
 #some code
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Если бэкэнд ваш и домен отличается от того, по какому взят клиент - используйте jsonp. Angular с ним отлично работает.
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Либо стартовать сервер статики с локалхоста, либо запускать браузер (хром) с --disable-web-security
Ответ написан
Комментировать
У берите пробел в конце адреса 'https://secret-coast-8851.herokuapp.com/phones.json '
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы