2013-04-07 98 views
2

我想從我的朋友目前正在處理的這個API輸出一個變量。 API完全打開,因此不需要身份驗證。這是爲什麼它是一個「意外的令牌」錯誤?

<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    <script src="http://profusum.se/js/jsonp.js"></script> 
</head> 
<body> 
    <script> 
     $.jsonp({ 
      url: "http://blackcab.didair.se/api/drivers", 
      //callbackParameter: '', 
      timeout: 45000, 
      success: function (driversData, statusTwo) { 
       $.each(driversData, function (i, data) { 
        var name = driversData.drivers[1].name; 
        document.write("<p> Namn: " + name); 
       }); 
      }, 
     }); 
    </script> 
</body> 
</html> 

但是,使用Chrome開發者工具時,我得到這個錯誤:

Uncaught SyntaxError: Unexpected token :        drivers:1 

爲什麼我得到這個錯誤?

+3

http://blackcab.didair.se/api/drivers&callback=hi沒有返回JSONP。正確的jsonp會是hi(the_object)而不是{the_object} – HMR 2013-04-07 14:36:12

+0

有效的JSONP響應可以在這裏找到:https://www.googleapis.com/customsearch/v1?q=cars&callback=hi – HMR 2013-04-07 14:39:29

+1

此外,除了返回json而不是javascript ,它返回'application/json'作爲內容類型而不是'application/javascript',因爲它應該是jsonp。 – 2013-04-07 14:41:19

回答

0

確認與jQuery返回的數據不是JSONP和不能被轉換到它:在

$.getJSON("http://blackcab.didair.se/api/drivers?callback=?", 
      //callbackParameter: '', 
      function (data) { 
      console.log("this is data:",data); 
}); 

結果:

SyntaxError: invalid label 
{"drivers":[{ 

該網站返回JSON不JSONP。爲了讓另一個站點連接到blackcab.didair.se,blackcab.didair.se必須返回JSONP或設置一個Cors響應頭(請參閱維基百科上的cors和相同的源策略)。

目前blackcab.didair.se正在返回JSON,這就是不一樣的JSONP