2011-09-10 42 views
0

私は別のドメイン、ドメインB(api.domainb.com)に設定したapiを持っていて、それをドメインAから呼び出したい(www.domaina.com)。しかし、ドメインAからドメインBへjquery ajax経由で呼び出しを行うと、jqueryはwww.domaina.com/api.domainb.comを呼び出そうとしてしまい、明らかにエラーが返されます。ここでは、関連するJavaScriptコードクロスドメインjquery 1.6.2 ajax呼び出しが同じドメインから呼び出しようとしています

$.ajax(
     url: 'http://api.domainb.com', 
     type: 'GET', 
     dataType: 'jsonp', 
     data: {hello: 'world'}, 
     crossDomain: true, 
     success: function(data){ 
     alert(JSON.stringify(data)) 
     }, 
     error: function(error){ 
     alert(JSON.stringify(error)) 
     }); 

最終的には、ドメインAとドメインBのコードは、同じドメインになりますが、今のところ、私はクロスドメインの呼び出しを行う必要があります。どのようにこの作品を作るための任意の提案?

+0

この質問のオリジナル版では、私はurl:url: 'api.domainb.com'というURLを持っていました。私はそれを 'http://api.domainb.com'に変更することを提案しました。元のバージョンの質問のコードがこれを反映するように更新されました。私は 'http://'を追加しようとしましたが、変更はありませんでした - 私は同じ問題を抱えています。 – user938301

答えて

2

クロスドメインコールを行うことはできません。ブラウザは一般的にそれを許可しません。しかし、あなたが記述している動作が表示されている理由は、URLに「http://」プレフィックスがないことです。

fairly new HTML5 APIsを使って、ドメイン間の呼び出しを行うための「取得許可」を並べ替えることができます。

編集 @Danは、XMLHttpRequestのは、(人々は通常、「AJAX」と呼んでいるもの)、クロスドメインのものを(CORS脇)しないだろうが、それは<script>タグが他のドメインを参照することができるという事実を活用することも可能だということを正しく指摘しますサービスをまとめるためにただし、サーバー側コードは異なる必要があります。 (通常「JSONP」と呼ばれています)

+0

私はそれについて専門家ではありませんが、IIRCではJSONPを使用して、サーバー側が協力する準備ができている限り、制限を回避することができます。シーンの裏では、XHRの代わりに 'script'タグを使用して動作します。 – Dan

+0

はい、それは本当ですが、もちろんそれは本当にXHRではありません:-)私は答えを明確にします。ありがとう! – Pointy

+0

そうですが、jQueryの背後にあるポイントは、XHRとJSONPが実際に同じことを達成しているということです。確かな定義は難しいですが、 "AJAX"はXHRだけを意味するものではありません。 – Dan

2

Ajaxコールでは、Ajaxコールが相対URLではなく別のドメインであることが分かります。​​3210を試してみてください。

関連する問題