AngularJS Uncaught SyntaxError:意外的令牌:

时间:2015-10-31 12:02:15

标签: javascript angularjs request jsonp

好的,我尝试过多次尝试,但没有任何工作

检查以下答案

  1. 问题/ 26262235 / JSONP-返回-未捕获-的SyntaxError-意想不到-令牌angularjs-routingnu

  2. 问题/ 16344933 / angularjs-JSONP - 不工作/ 16352746#16352746

  3. 问题/ 19269153 / JSONP请求功能于angularjs-犯规工作状合的jquery

  4. 问题/ 19669044 / angularjs-得到-语法错误在退回-JSON-从-HTTP-JSONP

  5. 他们没有解决我的问题。

    我想使用Giant Bombs API:http://www.giantbomb.com/api/

    是的,我看了一下论坛帖子没什么作用。

    $http({
            method: 'JSONP',
            url: 'http://www.giantbomb.com/api/game/3030-4725/',
            params: {
                api_key: $rootScope.api_key,
                format: 'jsonp',
                callback: 'JSON_CALLBACK'
            }
        }).then(function (data) {
            $scope.data = data;
            console.log($scope.data)
        });
    

    错误

    Uncaught SyntaxError: Unexpected token :
    

    有人可以给我一个提示吗?

    因为它真的令人沮丧,我甚至用JSON_CALLBACK()包装了数据相同的结果

1 个答案:

答案 0 :(得分:1)

原因是,angular需要服务返回jsonp,但它不是

您的代码执行此请求:

http://www.giantbomb.com/api/game/3030-4725/?json_callback=angular.callbacks._0&format=jsonp

在网络控制台中,您可以看到响应:

{"error":"'jsonp' format requires a 'json_callback' arguement","limit":0,"offset":0,"number_of_page_results":0,"number_of_total_results":0,"status_code":103,"results":[]}

所以回调的参数应该命名为:json_callback,而不仅仅是回调。

$http({
        method: 'JSONP',
        url: 'http://www.giantbomb.com/api/game/3030-4725/',
        params: {
            format: 'jsonp',
            json_callback: 'JSON_CALLBACK'
        }
    })

之后我可以看到关于api密钥的响应错误 - 这可能在你的实例中没问题。所以我反对你会得到正确的JSONP

http://www.giantbomb.com/api/game/3030-4725/?json_callback=angular.callbacks._0&format=jsonp

{"error":"Invalid API Key","limit":0,"offset":0,"number_of_page_results":0,"number_of_total_results":0,"status_code":100,"results":[]}

另一个问题是你的函数不是直接获取数据,而是响应,它是携带数据的对象,所以:

.then(function (response) {
        $scope.data = response.data;
        console.log(response.data)
    });

最后一条建议,不要在控制器中使用$ scope,而是使用“controller as”语法。