JSONP - “Uncaught SyntaxError:Unexpected token”

时间:2014-09-29 17:07:36

标签: javascript jquery ajax json jsonp

在我解释我的问题之前,我想提一下我jsonp的天真。这实际上是我第一次尝试使用JSONP

我使用jquery ajax调用来从网站上撤回数据。

我的jquery代码在

下面
$.fn.checkTPS = function(){

    return this.each(function(){
        var interval;

        $(this).on('keyup', function() {
            var api_key = 'asdfasfsadfsadfsad';
            var format = 'json';
            var username = 'dame@example.co.uk';

            var self = $(this);
            var selfValue;
            var feedback = $('.tps-feedback');

            if(interval === undefined){

                interval = setInterval(function(){

                    if(selfValue !== self.val()) {

                        selfValue = self.val();

                        if (selfValue.length > 9){
                            $.ajax({
                                url: 'https://www.selectabase.co.uk/api/v1/tps/' + selfValue + '/',
                                type: 'get',
                                dataType: 'jsonp',
                                data: {
                                    format: format,
                                    username: username,
                                    api_key: api_key
                                },
                                success: function(data) {
                                    console.log(data);
                                },
                                error: function() {

                                },
                                jsonp: 'jsonp'
                            });
                        }
                    }
                },3000);
            }
        });
    });
};

我希望提供selectabase.co.uk的服务,根据他们的说法我应该如何使用服务https://www.selectabase.co.uk/api/v1/tps/[number]/?format=json&username=[username]&api_key=[api key]

当我使用ajax发送请求时,我收到此错误Uncaught SyntaxError: Unexpected token :,点击后会打开 {"ctps": false, "number": "1452500705", "resource_uri": "/api/v1/tps/01452500705/", "tps": false}按照我想要的方式但不知道这个错误是什么 unexpected token :

我从inspect元素标签中复制了以下链接(你可以看到下图)我认为这是json https://www.selectabase.co.uk/api/v1/tps/01452500705/?jsonp=jQuery17102731868715648129_14120077325500&format=json&username=dame40example.co.uk&api_key=asdfasfsadfsadfsad&_=14120077325500

生成的调用

我在Chrome中复制了inspect element > source tab下面的链接。我想我应该添加一张图片来正确描述我从中复制的json数据和链接的位置。

enter image description here

我希望我能够传达我的信息......请帮助,如果您有任何想法我需要添加什么......问候

1 个答案:

答案 0 :(得分:6)

查询字符串中的format=json可能应为format=jsonp。服务器正在使用JSON进行回复,但您期望得到JSONP响应。但我不知道他们支持format=jsonp,这只是猜测。

或者,如果该服务器支持CORS并允许来自您的来源的请求,则可以处理JSON(只需从您的dataType: "json"电话中删除ajax) 。请注意,这将要求用户使用properly supports CORS的浏览器,IE8和IE9不会。 (它们支持CORS,但不支持普通XMLHttpRequest对象,这是jQuery 不会为你平滑的浏览器不一致。但是,如果搜索,你可以找到“插件“或类似的将处理它。”