2011-09-10 6 views
2

私はソースページのドメインとは異なるドメインにあるページにデータを投稿できるスクリプトを作成しようとしています。私はそのことに関するすべてのことを読んでおり、情報はjQuery.getJSON関数につながっていますが、これがうまくいくかどうかはわかりません。ここで

は私のシナリオです:

私はjavascriptの変数の一握り(この例では、ちょうどC1、C2、C3、C4とC5を使用することができます)を持っています。だから、これらの5つの変数の値を別のドメインのスクリプトに送信したいと思います。

私は私が$に.get(のようなものを使用してこれを行うだろうか理解)または$ .post() - 私はこれに似た何かだろう:(1)getJSON場合

$.post("myscript.php", { c1:c1, c2:c2, c3:c3, c4:c4, c5:c5 }); 

を私は不明です(2)YESの場合、getJSON関数(vs .post関数)のjQuery呼び出しの違いと、サーバー側で何か異なる必要がある場合(私の目的のために、今のところ視覚的に値を表示したいだけです)。

編集: 答えを読む際に、多分私は明確にする必要があります。私が探しているのは、別のドメインのあるページから別のページにデータを送信する方法(可能であれば)です。私はセキュリティ上の懸念を理解しているので、それが不可能ならば、それは吸うが、私は理解する。しかし、jQueryを使用する方法があれば、それは私が探しているものです(そして、私のc1 - c5変数を使った小さな例)。ありがとう。

答えて

2

もちろん、モードで$.getJSON()を使用して別のサーバー(クロスドメイン)にデータを送信できます。あなたのデータはクエリーストリングの一部でなければならず、無限に長いクエリー文字列を持つことができないので、送信できるデータの量には限りがあります。リクエストが通常のHTTP GETparams)と表示されるため、サーバー側でデータをどのように処理するかは変更されません。

ここでは、jQuery APIドキュメントから取り上げた例を示します。これはFlickr JSON APIからの最新の4枚の犬の画像を取得します。

Working Demo

var c1 = "dog"; 
var c2 = "any"; 

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?", { 
    tags: c1, 
    tagmode: c2, 
    format: "json" 
}, function(data) { 
    $.each(data.items, function(i, item) { 
     $("<img/>").attr("src", item.media.m).appendTo("#images"); 
     if (i == 3) return false; 
    }); 
}); 

c1c2GETパラメータとして渡される方法に注意してください。 jsoncallback=?パラメータは、JSONP要求として要求を行うようにjQueryに指示し、クロスドメインコールの作成時には必須です。生成された

var orderId = 1337; 
var customer = encodeURIComponent("John Doe"); 
var amount = 420; 

$.getJSON("http://www.otherserver?jsoncallback=?", { 
    oId: orderId, 
    cust: customer, 
    amnt: amount 
}, 

function(data) { 
    //process response if any 
}); 

サンプルHTTPリクエスト:

http://www.otherserver/?jsoncallback=jQuery16305821700256783515_1315685969538&oId=1337&cust=John%2520Doe&amnt=420&_=1315685969636 

HTHを

これは、あなたのスクリプトが見ることができる方法です。

+0

非常に良い - 私が探していたもの。ありがとう! – OneNerd

+0

素晴らしい!どういたしまして。 –

2

あなたが投稿をする必要がある場合はありません。名前はここでかなり説明的です:get ... json。これは、jsonリターンの処理を要求するものです。しかし、あなたが本当に関心を持っているのは、jsonを送信していることです。そのために特別なことは必要ありません。あなたの混乱はjqueryの中postjson機能の欠如に関係している場合

しかし、これはHTTP POSTリクエストとしてデータを送信しますhttp://abeautifulsite.net/blog/2008/05/postjson-for-jquery/

1

.post()メソッドを助けるかもしれません。ここでは、送信しているデータのデータ型(jsonやxmlなど)を自動的に検索します。 .getJSON()はデータをhttp get requestとして送信します。データのデータ型はJSONです。

1

getJSON()の場合は、結果を扱うハンドラを指定していないため、使用しないようです。 getJSONは、リクエストから返されたデータ型がJSONであることがわかっている場合に便利です。

0

SOP(Same Origin Policy)が原因で、別のドメインにAJAXコールを発信することはできません。

通常のフォームPOSTで実行できますが、ブラウザがレスポンスを処理する(新しいHTMLページを表示する、またはリダイレクトを実行するなど)。

getJSONはGET呼び出しで、キー値のペアをクエリ文字列urlとして送信できます。 $ .postはPOST呼び出しであり、candはデータをペイロードとして送信し、URLのクエリ文字列としてキー値のペアも送信します。 getJSONは$ .get(url、handler、 'json')に似ています。戻り値がjsonデータであることを確認します。

しかし、IMGタグを動的に作成するのと同じように簡単に何かを使って、別のドメインにGETリクエストを送信することはできます。

JSONPを使用することもできますが、現在のコンテキストを保持したい場合はGETコールでなければなりません。

乾杯。

0

あの、http://api.jquery.com/jQuery.getJSON/のAPIドキュメントから:

"説明:GET HTTPリクエスト を使用してサーバからロードJSONエンコードされたデータ"

したがって、短い答えは「いいえ」です。

関連する問題