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

AngularJS Parse JSON Array Objects Unexpected token :

本文关键字:令牌 意外 对象 分析 JSON 数组 AngularJS      更新时间:2023-09-26

我试着在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服务器上似乎无法正常工作,所以我在$http服务中使用了"get"方法,如so:

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;
}