0

node-jsを使用してjsonpを使用してオブジェクトを返す単純なJSONAPIを作成しています。サーバー側のコードは次のとおりです。

app.get('/vit',function  (req,res,next) {
    res.type('application/json');
    res.jsonp(items);  //items is the object
});

nodejitsuにデプロイし、url / vitに移動すると、オブジェクトアイテムが取得されます。これは、サーバー側で機能することを意味します。

jsonpを使用してこのオブジェクトを取得したい別のドメインがあります。クライアント側のコードは次のとおりです

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
    $.getJSON('http://trial.jit.su/vit',function  (data) {
       console.log(data) ;
    });
</script>

しかし、コンソールで次のエラーが発生します。

XMLHttpRequest cannot load http://trial.jit.su/vit. Origin http://jquer.in is not allowed by Access-Control-Allow-Origin.

Jsonpを理解していないようです。

4

1 に答える 1

6

jQueryドキュメントの引用

URLに文字列「callback=?」が含まれている場合 (または同様に、サーバー側APIで定義されているように)、リクエストは代わりにJSONPとして扱われます。詳細については、$。ajax()のjsonpデータ型の説明を参照してください。

http://api.jquery.com/jQuery.getJSON/

プレースホルダーとして疑問符が付いたクエリ文字列パラメータが必要です。

また、 http://trial.jit.su/vitの応答を見ると、コールバック関数がありません。PなしでプレーンJSONを返すだけです。たとえば、URLに?callback=bacon応答が含まれている場合は、

bacon({"your": "json string"});

callbackただし、パラメータを指定する限り、expressはこれを行います。

したがって、以下を変更するだけです。

$.getJSON('http://trial.jit.su/vit?callback=?',function  (data) {
    console.log(data) ;
});
于 2012-12-18T07:54:11.770 に答える