2014-09-29 105 views
3

在我解释我的问题之前我想提一下我在jsonp上的天真。这实际上是我第一次尝试与JSONP合作。JSONP - “未捕获的SyntaxError:意外的令牌”

即时通讯使用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 = '[email protected]'; 

      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 :

我已经复制从检查元素选项卡下面的链接(你可以看到下面的图片),我认为这是一个已经被JSON https://www.selectabase.co.uk/api/v1/tps/01452500705/?jsonp=jQuery17102731868715648129_14120077325500&format=json&username=dame40example.co.uk&api_key=asdfasfsadfsadfsad&_=14120077325500

产生我在铬复制从inspect element > source tab下面的链接调用..我想我应该添加一个图像来正确描述这个json数据和链接的拷贝。

enter image description here

我希望我已经设法跨越传达我的消息......如果你有任何想法,我需要什么补充...关心

+4

服务器正在发回JSON,而不是JSONP。那就是问题所在。 – 2014-09-29 17:09:26

+0

http://stackoverflow.com/questions/17406990/the-uncaught-syntaxerror-unexpected-token-in-jsonp,http://stackoverflow.com/a/19166256/2864740 – user2864740 2014-09-29 17:11:00

+0

但如果我使用'dataType:' json''浏览器dosent发送请求到那个URL – Sharif 2014-09-29 17:11:11

回答

6

format=json在您的查询字符串,请帮助应该可能是format=jsonp。服务器使用JSON进行回复,但您期待JSONP响应。但我不知道他们支持format=jsonp,这只是一个猜测。

或者,如果服务器支持CORS,并允许从产地的要求,你可以处理JSON代替(只是从你的ajax通话中移除dataType: "json")。请注意,这需要用户使用IE8和IE9不支持的浏览器。 (他们支持CORS,但不是通过正常的XMLHttpRequest对象,这是一个浏览器不一致,jQuery 并不为平滑,如果你搜索,你可以找到“插件”或类似的,将处理它。 )

+0

这种格式与ajax jsonp无关,这是他们如何发送数据'?format = json&username = [username]&api_key = [api key]' – Sharif 2014-09-29 17:14:47

+0

我试过用jsonp了,但仍然出现同样的错误 – Sharif 2014-09-29 17:15:26

+0

@Sharif :通常情况下,如果这样的服务具有格式查询字符串参数,它们支持多种格式(JSON,XML和JSONP都很流行)。这个可能会也可能不会,但是再次,因为它们似乎支持CORS,如果这是他们提供的所有东西,那么可以使用JSON。 – 2014-09-29 17:15:47

相关问题