ここに投稿された3つのソリューション:
http://devlog.info/2010/03/10/cross-domain-ajax/
私は 3 番目のオプションを試しましたが、それは私にとってはうまくいったので..通常の ajax 呼び出しと同じように処理するだけだったので、余分なストレスを感じる必要はありませんでした。
これは2年前に投稿されたので、回答を更新します:
上記のリンクが機能しなくなりました。
サーバー側プロキシ:
古いページでは、サーバー側プロキシの使用についても説明しています。これは、サーバーが別のサーバーに呼び出しを行い、すべてのデータを取得して、そのサーバーにあるページに送信することを意味します。あるサーバーが別のサーバーからデータを取得することは問題ありません。したがって、ページはそのサーバーに対して通常の ajax 呼び出しを行うことができます。より多くの手作業が必要になるため、このオプションは使用しませんでした。したがって、ここで説明するオプションを使用することをお勧めします。
jQuery を使用した JSONP
- プロバイダーが JSONP をサポートしていることを確認してください。
- dataType オプションを jsonp に設定し、プロバイダーが「callback」以外の別の GET パラメーターを使用する場合は、そのパラメーター名に jsonp オプションを指定します。
$.ajax({
// ... Use the AJAX utility as you normally would
dataType: 'jsonp',
// ...
});
jQuery は、この要求に対して一意のコールバック名 (json1268267816 など) を生成します。したがって、Web サービスからの応答は次のようになります。
json1268267816({'uid': 23, 'username': 'Chroder', 'name': 'Christopher Nadeau'});
しかし、jQuery はそれをすべてシームレスに処理するため、開発者は、同じ jQuery の成功/失敗/完全なコールバック フックを使用して、通常の AJAX 要求のように処理するだけです。
欠点:
このメソッドの最初の制限は、プロバイダーに依存して JSONP を実装する必要があることです。プロバイダーは、JSONP を実際にサポートする必要があります。JSON データをそのコールバック関数名でラップする必要があります。
次の制限 (これは大きな制限です) は、JSONP が POST 要求をサポートしていないことです。すべてのデータがクエリ文字列で GET データとして渡されるため、サービスで長いデータを渡す必要がある場合 (たとえば、フォーラムの投稿、コメント、記事など) は非常に制限されます。しかし、プッシュするよりも多くのデータをフェッチする大多数のコンシューマー サービスにとって、これはそれほど大きな問題ではありません。
でも、
JSONP をサポートする jQuery のようなライブラリを使用すると、これらの特別なスクリプト タグの挿入と特別なコールバック関数の作成の詳細はすべて自動的に処理されます。JS ライブラリを使用する場合、通常、JSONP と実際の AJAX の唯一の違いは、「jsonp」オプションを有効にすることです。