2015-10-29 2 views
0

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

Вот вывод 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 = "в uitems.results". Получить результаты элемента - это массив вашего ответа json, на котором вы можете использовать ng-repeat –

+0

, или нет. – ngLover

+0

@ J-D, никаких изменений в результате. Я боюсь. – aqq

ответ

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; 
} 
Смежные вопросы