AngularJS Parse JSON Array Objects Неожиданный токен:

0

Я попытался выполнить поиск в StackOverflow по этой проблеме, но не смог найти решение, которое сработало для меня. Я использую AngularJS. У меня есть простой контроллер, который вызывает службу http и считывает данные ответа. В этом конкретном случае у меня есть вывод JSON с массивом объектов, который я не могу прочитать.

Здесь вывод JSON:

{
  "results": [{
    "id": "1",
    "download_url": "",
    "uploader": {
      "id": "114899"
    },
    "uploaded": "1442599380",
    "streaming_url_timeout": 1446092554
  }, {
    "id": "2",
    "download_url": "",
    "uploader": {
      "id": "114899"
    },
    "uploaded": "1442599380",
    "streaming_url_timeout": 1446092554
  }]
}

Я пытаюсь получить доступ к элементам в "результатах". Это моя служба, которая извлекает данные JSON:

this.getUData = function() {
  var deferred = $q.defer();

  $http.jsonp(API_URL + 'udata')
    .success(function(data) {
      deferred.resolve(data);
    })
    .error(function(data) {
      deferred.reject(data);
    });

  return deferred.promise;
}

И тогда я так называю эту услугу с моего контроллера:

myservices.getUData().then(function(data) {
   $scope.uitems = data.results;
});

Шаблон:

<div class="item" href="#" ng-repeat="item in uitems">
  <h2>{{item.id}}</h2>
</div>

Но когда я пытаюсь получить доступ к элементам в "результатах", я получаю следующую ошибку:

Uncaught SyntaxError: Unexpected token : 

Соответствующая строка для этой ошибки - "results":[

  • 0
    Попробуйте использовать ng-repeat = "item in uitems.results". Поскольку результат элемента является массивом вашего ответа json, на котором вы можете использовать ng-repeat
  • 0
    решено или нет ..
Показать ещё 2 комментария

1 ответ

0

Похоже, в этом случае функция обратного вызова работала неправильно на сервере PHP, поэтому мне удалось уйти, используя метод GET в службе $ http, например:

this.getUData = function() {
  var deferred = $q.defer();

$http({method: 'GET', url: API_URL + 'udata'})
    .success(function(data) {
      deferred.resolve(data);
    })
    .error(function(data) {
      deferred.reject(data);
    });

  return deferred.promise;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню