AngularJS解析JSON数组对象意外的令牌:

时间:2015-10-29 04:12:46

标签: javascript json angularjs

我已尝试在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>

但是当我尝试访问&#39;结果&#39;中的项目时,我收到以下错误:

Uncaught SyntaxError: Unexpected token : 

此错误的相关行是"results":[

1 个答案:

答案 0 :(得分:0)

在这种情况下,回调函数在PHP服务器上运行不正常,所以我设法通过使用&#39; GET&#39; $ 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;
}