■
javascriptではセキュリティの観点からドメインが違うオブジェクトへのアクセスができない。
var windowYahoo = window.open('http://yahoo.co.jp','','');
で別ドメインのウィンドウを開いてから、
alert(windowYahoo.document.getElementById("hogehoge"));
でオブジェクトを取得しようとしても「アクセスが拒否されました」とエラーが出ます。
別ドメインで提供されているAPIを利用して、自サイトでAJAXで処理したいときに非常に不便です。
この解決方法としてAPI側で返すデータをXMLではなくJSON形式で返すという方法があります。
JSONとは要はjavascriptのオブジェクトをそのまんまテキストデータとして返すデータのこと。
xmlだと
例えば
となるところをJSONだと
var order = {"piza":[
{"menu":"カレーいも","amount":1,"price":"2100"},
{"menu":"いも","amount":2,"price":"2100"},
{"menu":"トマトバジル","amount":1,"price":"2400"}
]
};
と表現できる。
これをjsonDataというファイルに保存し
で別のドメインから呼び出すと、普通にjavascriptオブジェクトとして扱える。
function getObject() {
//order配列のキーがpizaの、さらに配列の
//1番目のさらに配列のキーpriceのvalueを取得
value = order["piza"][1]["price"];
alert(value);
}