2

RESTful APIで作業していて、ブラウザで96.126.111.211/getLeaderBoardでこれにアクセスすると

正常に動作し、mongoデータベースからJSONデータを取得します。

ただし、このhttp://jsfiddle.net/yVQ5T/のようなjquery ajaxリクエストを試行すると、jsonpエラーが発生します。

エラー:jQuery171037622810900211334_1363808084624が呼び出されませんでした

これがサーバー側のコードです

getLeaderBoard(req, res)
{
    this.db.collection(this.settings.userTable, function(err, collection) => {
        collection.find().toArray(function(err, items) {
            res.writeHead(200, {'Content-Type': 'application/javascript'});

            res.write(JSON.stringify(items));

            res.end();
        });
    });
}
4

2 に答える 2

1

Express 3.0を使用してresponse.jsonpいる場合は、使用方法がと同じであるかどうかを確認できますresponse.json。別のドメインからサーバーにアクセスしている場合は、ブラウザが安全対策として実装するドメイン間のリクエスト制限のため、JSONPプロトコルを使用する必要があります。

app.enabled("jsonp callback")Express 2.xでは、を介してJSONP応答処理を有効にしてから、を使用する必要があります。response.json

3.0 API

2.0 API

于 2013-03-20T19:45:48.930 に答える
1

URLはJSONPではなく通常のJSONを提供します。たとえば、コールバック関数の呼び出しにURLを配置する必要があります。

jQuery171037622810900211334_1363808084624 ([{"userId":"100821494565115211032","winCount":4,"_id":"5148caa1a1651dff12000002"}]);

コールバック名は動的に生成されるため、リクエストから読み取る必要があります。

于 2013-03-20T19:43:04.397 に答える