2012-11-12 27 views
1

我想通過這樣與JSONP訪問#1 API的數據類型:訪問與JSONP計算器API提供了意想不到的結果

$(document).ready(function(){ 
     $.ajax({ 
      url: 'http://api.stackoverflow.com/1.1/tags/php/top-answerers/month', 
      dataType: 'jsonp', 
     }); 
     }); 

而且一旦我重裝,我在控制檯中執行以下操作:

"Uncaught SyntaxError: Unexpected token :" 

我在這裏做錯了什麼?

+0

它看起來像API不支持JSONP,它返回普通的JSON。 – Barmar

回答

0

現在應用程序正在返回內容類型:application/jsonapplication/javascript代替:

$(document).ready(function() { 
    $.ajax({ 
     url: 'http://api.stackoverflow.com/1.1/tags/php/top-answerers/month', 
     dataType: 'jsonp', 
     jsonp: 'jsonp', 
     success: function (data) { 
      alert(data.top_users.length + ' users retrieved.'); 
     } 
    }); 
}); 

信息上JSONP AJAX設置:

您可以通過重寫回調函數名jsonp它會告訴服務器返回的Content-Type解決這個問題jsonpString

覆蓋jsonp請求中的回調函數名稱。將使用此值 代替'callback =?'中的'callback'部分 查詢字符串在url中。所以{jsonp:'onJSONPLoad'}會導致 'onJSONPLoad =?'傳遞給服務器。從jQuery 1.5開始,將 jsonp選項設置爲false會阻止jQuery將「?callback」 字符串添加到URL或嘗試使用「=?」。進行轉化。在 這種情況下,您還應該明確設置jsonpCallback設置。 例如,{jsonp:false,jsonpCallback:「callbackName」}

0

https://api.stackexchange.com/docs

所有API響應是JSON,我們支持與JSONP回調查詢參數。 API中的每個響應都在一個通用的「包裝器」對象中返回,以便更輕鬆,更一致地解析。

所以你應該使用dataType: 'json'而不是jsonp

您還應該升級到2.1 API,1.x API已被棄用6個月。

+0

使用'json'代替:'XMLHttpRequest無法加載http://api.stackoverflow.com/1.1/tags/php/top-answerers/month。 Access-Control-Allow-Origin.'不允許源http:// localhost:26562 –

相關問題