私はJavaScriptとAJAXをかなり前から使用していますが、Cross Domain XHRが実際にどのように機能し、JQueryがそれをどのように処理するかを理解したいと思います。何らかの理由で、実際にどのように機能するかを考えたことはありません。ウィキペディアのJSONPの記事を読みましたが、もっと混乱しています。何がわからないのかわかりません。
私は、JavaScriptを使用してデータを直接JSONP
消費できることを認識しています。JSON
たとえば、このJSFiddleの例。ここではJSON
、画像のリストを表示するために使用しています。XML
代わりにデータを使用して同じことを達成できますか?質問のこの部分に答える前に、アナロジーの残りの部分を読んでください。
1)以下のようなものやフィドルリンクを試してみるとエラーが発生しますUncaught ReferenceError: jsonFlickrFeed is not defined
$.ajax({
url: "http://api.flickr.com/services/feeds/photos_public.gne",
data: {
format: "json"
},
dataType: "jsonp",
success: function(d) {
console.log(d);
}
});
2)以下の例またはフィドルリンクは正常に機能します
$.ajax({
url : "http://api.flickr.com/services/feeds/photos_public.gne",
data: {format: "json"},
dataType: "jsonp"
});
jsonFlickrFeed = function(d){
console.log(d);
}
jsonFlickrFeed({})
Q)返されるデータは、 jsonFlickrFeedコールバック関数を記述して機能させる必要があるような形式であるため、1から2の間だと思いますか?
Q)成功コールバックを呼び出さないのはなぜですか?
Q)JSONP(つまりフォーマットのデータjsonFlickrFeed({})
)を返す仕事をするのはFlickrエンドポイントですか?それとも、実際のJSONを返すだけで、JQueryがそれを埋めますか?
3)$.getJSON
コードは以下またはフィドルのようなものです
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?", {
format: "json"
}, function(d) {
console.log(d)
});
Q)ケース3)の場合、JQueryはどのように処理しますか?返されたデータが形式であることがわかりますjQuery1820349100150866434_1355379638775({})
。JQueryがJSONをコールバックに関連付ける仕事をしていると仮定すると、それは正しいですか?
Q)上記の理由から、JQueryの略記法と呼ばれていますか?
私が試したものは何でも、XMLデータを消費できませんでした。JSONの代わりにXMLデータを使用する方法を考えることができませんでした。
Q)同様の方法でJSONの代わりにXMLデータを使用することは可能ですか?
Q)それ以外の方法でこれを行うことを考えることができる唯一の方法は、同じドメインを介してデータをプロキシすることです。この理解は正しいですか?
ここで役立つ場合は、dropboxにあるXMLの例を示します。これは、XMLデータが同じドメインから発信された場合に解析できることを示すためです。