2014-09-29 69 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

相關問題