読者です 読者をやめる 読者になる 読者になる

AJAX

javascriptではセキュリティの観点からドメインが違うオブジェクトへのアクセスができない。
  var windowYahoo = window.open('http://yahoo.co.jp','','');
で別ドメインのウィンドウを開いてから、
  alert(windowYahoo.document.getElementById("hogehoge"));
でオブジェクトを取得しようとしても「アクセスが拒否されました」とエラーが出ます。


別ドメインで提供されているAPIを利用して、自サイトでAJAXで処理したいときに非常に不便です。


この解決方法としてAPI側で返すデータをXMLではなくJSON形式で返すという方法があります。
JSONとは要はjavascriptのオブジェクトをそのまんまテキストデータとして返すデータのこと。
xmlだと
例えば

  
    

カレーいも
    1
    2100
  
  
    いも
    2
    2100
  

  
    トマトバジル
    1
    2400
  


となるところを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);
  }