1

これを行うことで、データ型としてjsonpを使用してStackoverflowAPIにアクセスしようとしています。

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

そして、リロードすると、コンソールに次のように表示されます。

"Uncaught SyntaxError: Unexpected token :"

私はここで何が間違っているのですか?

4

2 に答える 2

0

https://api.stackexchange.com/docsから

すべてのAPI応答はJSONであり、コールバッククエリパラメーターを使用してJSONPをサポートします。APIのすべての応答は、より簡単で一貫性のある解析のために、共通の「ラッパー」オブジェクトで返されます。

したがって、dataType: 'json'ではなくを使用する必要がありますjsonp

また、2.1APIにアップグレードする必要があります。1.xAPIは6か月間非推奨になっています。

于 2012-11-12T21:57:45.440 に答える
0

現在、アプリケーションはContent-Type:を返していますapplication/json

これを修正するjsonpには、サーバーにContent-Typeを返すように指示するコールバック関数名をオーバーライドします。application/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設定に関する情報:

jsonpString

jsonpリクエストのコールバック関数名をオーバーライドします。この値は、「callback =?」の「callback」の代わりに使用されます。URLのクエリ文字列の一部。したがって、{jsonp:'onJSONPLoad'}は'onJSONPLoad =?'になります。サーバーに渡されます。jQuery 1.5以降、jsonpオプションをfalseに設定すると、jQueryが「?callback」文字列をURLに追加したり、「=?」を使用したりするのを防ぐことができます。変革のために。この場合、jsonpCallback設定も明示的に設定する必要があります。たとえば、{jsonp:false、jsonpCallback:"callbackName"}

于 2012-11-12T22:40:17.727 に答える