2011-09-29 43 views
5

私はクロスドメインリクエストを送信するためにExt.Ajax.request(ExtJS 3を使用)と思われるスクリプトを使用しています。 ExtJS3(おそらくExtJSから離れる可能性があります)から離れていくための検討が行われていますが、XMLHttpRequestを使用する際の迅速な試みは機能しませんでした。これらのクロスドメイン要求を送信するためにどのようなテクニックが使用されているのかを知るにはどうすればよいですか?Ext.Ajax.requestを使用するクロスエンゲージメントクロスドメインPOSTリクエスト

答えて

-2

あなたは jQueryの例JSONPを使用しようとすることができます:

$.ajax({ 
    url: "test.php", 
    dataType: "jsonp" 
    success: function(data){ 
    console.log(data) 
    } 
}); 

をそれとも、要求されたコンテンツへのアクセス権を持っている場合は、アクセス制御 - 許可 - 起源ヘッダーを設定することができます。 PHPの例:

header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']); 
0

Ext JS 3.4 online documentationExt.Ajax.requestメソッド呼び出しにソースコードの相関を追跡するために使用することができExt.Ajaxクラスの継承モデルを提供します。しかし、ホイールを再作成するのに時間とリソースを費やすのではなく、ネイティブExt JS Ext.data.ScriptTagProxyクラスを既存のストアにproxy設定オプションを使用して実装することをお勧めします。以下は私が言及しているものの省略例です。

var myJsonStore = new Ext.data.JsonStore 
({ 
    autoLoad : true, 
    proxy : new Ext.data.ScriptTagProxy 
    ({ 
     url : 'http://www.cross-domain.com/file.php' 
    }), 
    fields : ['myIdColumn','myCharColumn','myDateColumn'] 
}); 

ADDITION

あなたは離れてのExt JSを使用してACD (AJAX Cross Domain)ライブラリをチェックアウトしてくださいからの移動にいきますので。

+0

しかし、私はExtJSの使用をやめようとしています...これはExtJSを使い続けることを示唆していませんか? –

+0

必ずしもそうではありません。 Ext JS 3.4のオンラインドキュメントを使って、 'Ext.Ajax'クラス継承モデルとその基礎となる' request'メソッドロジックを見直してみることをお勧めします。そこから開始し、継承階層を理解することで、ツリーを簡単にたどることができ、スーパークラスのメソッドとクロスドメイン要求を容易にするロジックを識別し、レビューすることができます。私の例は誤解されている可能性がありますが、あなたが探しているものが見つかる可能性が高い特定の 'Ext.data.ScriptTagProxy'クラスをヒントすることを意図していました。 –

+0

クロスドメインサポートを提供する非常に簡単で軽量なJavaScript AJAXライブラリをぜひお試しください。自国のソリューションの作成時に設定されている場合は、ライブラリ自体を使用することも、ソースコードを参照として使用することもできます。 –

3

私は現在ExtJS 3.3.1を使用していますが、私はまだ4への切り替えを行っていませんが、新しいプロジェクトが来るときにはおそらくそうです。 Extソースを見ることなく、彼らがJSONPを使ってこのタスクを達成していると言えるでしょう。JavaScriptがsame-origin policyを守らなければならないので、クロスドメインAJAX呼び出しを行う唯一の方法です。

JSONPの純粋なJS実装をしようとしていますか?または、既にJSライブラリを使用していますか?私たちのコメントパー

編集

...彼らは、POSTリクエストを作っています。これはJSONPでは不可能です。だから私が言うことができる限り、彼らはiframeのトリッキーを使用しています。それは古いブラウザでファイルをアップロードするのと同じトリックです。

Thisリンクはこれをより詳しく説明しています。

Valum's file uploaderでも同じ方法(iframe to、POST、ファイルをアップロード)が使用されています。 ExtJSソースに従う方がはるかに簡単です。

+0

しかし、JSONPを使ってPOSTリクエストを送信できますか?私はFirebugのネットワークアクティビティを見ていて、ページはクロスドメインPOSTリクエストを送信しています –

+0

今私は興味があります... JSONPはGET要求のみを送信できると仮定します。私は掘りに行きます。 –

+0

あなたと私の両方の男! –

0

JSONPは少しハックですが、使用できます。

ただし、交差するドメインを制御する場合は、CORSを使用することを検討してください。 CORSでは、Webサイトからの応答にヘッダー(Access-Control-Allow-Origin)を挿入します。http://enable-cors.org/

これはIE 8+(Firefox、WebKitブラウザ)でサポートされています。IEの注意点は次のとおりです.IISは、CORS要求に対して異なる要求オブジェクト(XDomainRequest)を使用します。 Operaをサポートする必要がある場合は、JSONPまたはpolyfill(フラッシュが必要なhttps://github.com/gimite/web-socket-js/のようなもの)を使用する必要があります。

問題のドメインを管理していない場合は、CORSをサポートするように依頼できます。

関連する問題