Angular $ http jsonp:如何解析数据

时间:2014-11-12 00:15:55

标签: ajax angularjs api http

我开始学习Angular,我想玩$ http调用函数。 我基本上想要向外部API发出get请求:

angular.module('pokedexApp')
  .controller('MainCtrl', function ($scope, $http) {
    var response;
    $http.jsonp("http://pokeapi.co/api/v1/pokemon/1/").success(function(response) {
        response = response;
    })

    $scope.pokemon = response;
  });

关于这是如何工作的,我可能完全错了。我基本上希望{{ pokemon }}出一个响应来测试它。

我收到Uncaught SyntaxError: Unexpected token :错误,我无法判断是否是因为返回数据格式不正确或者是什么。

2 个答案:

答案 0 :(得分:1)

错误是因为在角度中它将尝试以json类型解析此响应。它无法解析,所以它抛出一个错误:

Uncaught SyntaxError: Unexpected token :        

似乎你最好处理你自己的jsonp响应。

  $scope.triggerJsonp = function(){
      $http.jsonp("http://pokeapi.co/api/v1/pokemon/1/", {params: {'callback':'eqfeed_callback'}});  
  };
  window.eqfeed_callback  = function(data){
      $scope.response = data;
  }

Here is jsfiddle.

jquery.ajax中的相对问题JSONP call showing "Uncaught SyntaxError: Unexpected token : "并回答使用自己的回调来处理这个问题。

答案 1 :(得分:0)

网站似乎不提供JSONP支持 - https://github.com/phalt/pokeapi_issues/issues/30

您的$ http请求没问题,但您目前在“响应”方面存在范围问题。这就是编写代码的方式,以便正确定义范围变量:

angular.module('pokedexApp')
   .controller('MainCtrl', function ($scope, $http) {
        $http.jsonp("http://pokeapi.co/api/v1/pokemon/1/").success(function(response) {
            $scope.pokemon = response;
        })    
   });