Я попытался выполнить поиск в 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":[
Похоже, в этом случае функция обратного вызова работала неправильно на сервере 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;
}