2011-11-08 16 views
1

にクロスドメインJSON/Ajax呼び出しを構成する方法:私はこのフォームを使用してWebサービスを持っている単純なWebサービス

応じて、JSONドキュメントを結果
http://<remote_domain_ip>/api/v1/search/?query=the_query 

私はレスポンスを返すためにJQuery JSON/ajax呼び出しを作成/作成する方法を教えてください。

REPONSEの形式は次のとおりです。

{ 
"status_code":200, 
"status_txt":"OK", 
"field1":"abc", 
"field2":"some_text" 
} 

答えて

1

それは依存しています。あなたはb.com言う上にあり、Webサービスが上に配置されている場合、しかし、

$.ajax('path-to-your-service/WebMethodName', data, function(r){ 
    // Success callback, you have your answer in r.d object 
}, function(e){ 
    // Error callback 
}); 

:あなたは、ドメインa.comに言っていると、Webサービスも同じ場所に配置されている場合は、単にそれをこの方法で行うことができますa.comの場合は、Same-Domain Policyという概念で制限されています。つまり、特定の規則に従わない限り、AJAX呼び出し(またはXMLHttpRequest)を使用してそのWebサービスからデータをフェッチすることはできません。 1つはAccess-Control-Allow-Origin HTTPヘッダーフィールドを使用することです。これにはブラウザにいくつかの問題があります。もう1つの方法は、JSONPを使用することです。サーバーでサポートする必要があります。

JSONPを使用するには、jQueryの$.getJSON()メソッドを使用し、HTTP GET経由で送信されたパラメータの横にコールバッククエリ文字列キーを用意する必要があります。 、

$.getJSON('path-to-your-service?x=some&y=thing?callback?', function(r){ 
    // Success callback. Your JSON object would be the r parameter 
}); 

は、私は、Webサービスの作成者である場合は、JSONPを使用することをお勧めします、とあなたは、.NETフレームワークを使用している場合、私はまた、あなたは、単に代わりに、Webサービスのジェネリックハンドラ使用することをお勧めしますWebサービスの設定に多くの問題があったためです。ただし、サーバーのコードでは、あなたはコールバックと呼ばれるクエリ文字列のキーの着信GETリクエストを確認する必要があり、それが存在する場合は、関数内でこの方法をご返却JSONをラップする必要があります。

JSONPを理解
callback({ 
    a: a1, 
    b: b1, 
    c: c1 
}); 

(概念とそれが起こる方法)は非常に重要です。深い理解がなければ、あなたの将来のメンテナンスは大きな負担になるでしょう。私は読むことをお勧めしますthis質問。

+0

いいえ、今すぐ別のドメインへの呼び出しです。 – xybrek

-1

あなたはあなたと同じドメインではないとは限りません。 remote_domain_ipにアクセスできる場合、またはファイルをホストするように指定できる場合は、EasyXDMを使用できます。あなたが試すことができるフラッシュを含む同様の回避策があります。それ以外の場合は、バックエンドでリクエストを実行する必要があります。

関連する問題