0

(非常に無知な質問です、私は自由に認めます)

ボタンとラベルを備えた単純な Web ページがあります。ボタンをクリックすると、まったく別のドメイン (クロスドメイン、私はそれを知っています) に対して REST 呼び出しを行い、結果 (HTML) をラベルに表示したいと考えています。

他の API では、JSON/P を使用してその場で要素を追加してみましたが、この特定の API は JSON をサポートしていないため、うまく処理する方法がわかりません。

私が持っているコードは次のとおりです。

    function getESVData() {
    $.get('http://www.esvapi.org/v2/rest/passageQuery?key=IP&passage=John+1', function (data) {
        $('#bibleText').html(data);
        app.showNotification("Note:", "Load performed.");
    });
}

「アクセスが拒否されました」というメッセージが表示されます。JSONなしでこの呼び出しを成功させる方法はありますか?

4

1 に答える 1

6

まず、JSON と JSONP は同じではありません。JSON は情報を表現する方法であり、JSONP は同一生成元ポリシーに関するハックです。JSONP は別のドメインからの情報を要求することによって機能し、そのドメインは情報を使用して関数 (指定した名前) を呼び出すスクリプトを返します。別のドメインから提供されたスクリプトを実際にサイトで実行しているため、この別のドメインを信頼する必要があります。

クロスドメインリクエストを作成しようとするとき、基本的に3つのオプションがあります:

  1. JSONP を使用します。これには、GET リクエストに対してのみ機能するという事実や、リクエストを送信するサーバーがそれをサポートする必要があるなどの制限があります。
  2. Cross Origin Resource Sharing (CORS) リクエストを行います。これは、リクエストの送信先のサーバーでもサポートされている必要があります。
  3. 独自のサーバーにプロキシを設定します。この状況では、単にリクエストを中継するエンドポイントをサイトに設定します。つまり、サーバーから情報を要求すると、サーバーは他のサーバーから情報を取得して返します。

あなたの状況では、他のサーバーが他のオプションをサポートしていない場合、オプション3を使用する必要があるようです.

于 2013-03-30T07:44:22.857 に答える