まjQuery$.getJSON()僕は必要ですか?
質問
そこで広く用いられているスクリプト内でできるポストデータのページで異なるドメインのドメインの情報は、こちらをご覧ください読んだすべての問題についてうる情報につながっているjQuery.getJSON機能が、私ただこします。
このシナリオ:
私は一部javascriptの変数(この例で使用c1、c2、c3、c4およびc5).のにしたいと思い送信していないものについては、5変数をスクリプトを別のドメイン.
それはよくわかっていてこれを使う$.get()や$.post()-入っていても同様のこと:
$.post("myscript.php", { c1:c1, c2:c2, c3:c3, c4:c4, c5:c5 } );
私は不明(1)の場合はgetJSON取得しまうか、(2)YESならば、どの差があり、jQueryのgetJSON機能(vsます。ポスト機能)などがあれば、何でもないサーバに(私の目的につなげたいと思い表示の値を返視覚的ます。
編集: 読み応答のかを明らかにする必要がある.ういう場合はいつでも可能)へデータを送信し、他のページにページが異なります。私の理解では、セキュリティの関係上、その場合はできませんので、吸い込みがよくわかりました。がある場合を利用しjQuery、そうい(小さな例を使ってc1-c5変数).感謝。
解決
昇、雨などの天候により送信できるデータを他のサーバー(クロスドメイン)を使用 $.getJSON()
に JSONP
モードになります。それは要するデータの一部でなければならないのquerystringは、"までとさせていただき量のデータを送信できるかできない場合もありますのでinfintitely長のクエリ文字列です。変更はありませんかすプロセスデータサーバ側からの要請をして下さい通常のHTTP GET
と params
.
以下に例を示しますからjQuery APIドキュメント.この引の4最近の犬の写真をFlickr JSON APIに含まれています。
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;
});
});
通知方法 c1
や c2
として渡されます GET
パラメータ。の jsoncallback=?
パラメータの指示jQueryの要求としてJSONPの要請は必須ながらクロスドメインに発信します。
こうしてスクリプトのような:
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.
他のヒント
投稿をする必要がある場合はそうではありません。名前はここでかなり説明的です:get ... json。これは、JSONリターンの処理を伴うGETリクエストです。しかし、あなたが本当に興味を持っているのはJSONを送ることであり、そのために特別なものは必要ないようです。
しかし、あなたの混乱がjQueryのポストJSON機能の欠如に関係している場合、これは役立つかもしれません http://abeautifulsite.net/blog/2008/05/postjson-for-jquery/
.post()メソッドは、HTTP POSTリクエストとしてデータを送信します。ここでは、送信しているデータのデータ型(JSONまたはXMLなど)が自動的に見つかります。 .getJson()はHTTP Get Requestとしてデータを送信し、ここでデータのデータタイプがJSON指定されています。
役に立たないように聞こえます getJSON()
結果で作業するハンドラーを指定していないためです。 getJSON
リクエストから返されたデータタイプがJSONであることがわかっている場合に役立ちます。
SOP(同じ起源ポリシー)のため、別のドメインにAJAX呼び出しを行うことはできません。
通常のフォームの投稿でそれを行うことができますが、ブラウザは応答の処理を強制します(新しいHTMLページを表示するか、リダイレクトなどを実行します...)。
GetJsonはGet Callであり、クエリ文字列URLとしてキー値のペアを送信できます。 $ .POSTは、ポストコールで、CANDデータをペイロードとして送信し、URLのクエリ文字列としてキー値のペアも送信します。 getjsonは$ .get(url、handler、 'json')のようなもので、返品がJSONデータであることを保証します。
ただし、動的にIMGタグを作成するのと同じくらい簡単なものを使用して、さまざまなドメインにGETリクエストを送信できます。
または、JSONPを使用することもできますが、現在のコンテキストを維持したい場合は、Get Callである必要があります。
乾杯。
ええと、APIドキュメントから http://api.jquery.com/jquery.getjson/:
「説明:GET HTTP要求を使用して、サーバーからJSONエンコードデータをロードします。」
したがって、短い答えは「いいえ」です。