複数のXMLファイルを読み込んで処理をネストさせたい

ググると並列な取扱方法はすぐに見つかった。同一なデータ構造なら簡単みたいだ。
第5回 ajaxを使って複数ブログの最新記事一覧を表示する

データXMLと詳細XMLとか別情報となっているXMLファイルで片方を読み込んでから、もう一方のXMLを処理したいことってあるよね?
部屋(room.xml)と設備(equip.xml)とか

XMLのロードをネストするやり方

//呼び出すHTML
<script type="text/javascript">
<!--
$(document).ready(function(){
 $.ajax({
  url: "equip.xml",
  dataType: "xml",
  success:xmlEquip,
  error: function(){alert("equipXMLファイルを読み込めませんでした");},
  cache:false
 });
});
-->
</script>

部屋リストに設備情報を被せたいので先に設備

function xmlEquip(xml){
 var equip={};
 $(xml).find("Row").each(function(){
  var name = $("name", this).text();
  var data = $("data", this).text();
  equip[name].push(data);//このあたりは適当
 });
 $.ajax({
  url: "http://fullpath/room.xml",
  dataType: "xml",
  success:function(xml){xmlRoom(xml, equip)},
  error: function(){alert("roomXMLファイルを読み込めませんでした");},
  cache:false
 });
}

function xmlRoom(data, equip){
 var rtn="";
 $(data).find("Row").each(function(){
  var name=$("name", this).text();
  rtn+=equip[name];
 });
 $("#room").html(rtn);
}

ポイント

  • 一回目の呼び出しでハッシュにデータを保存する
  • successなときに一手間かけると別データとして扱ってくれるようになった
  • 二回目に呼び出すXMLファイルはフルパスにしないとダメだった
  • ハッシュデータを呼び出してHTMLを生成

こんなのあまり使わないね。。。