• 締切済み

jqueryでの外部XMLファイルの読み込み

今、ie8上でjqueryを使って、別ドメイン上にあるXMLファイルを読み込もうとしています。 ieはfirefoxとはちがい、なかなかうまくいきませんでした。 (http://www.netagent-blog.jp/archives/51509761.html) この上記のページを参考に、XDomainRequestのラッパーを作成してやってみたのですが、ファイルを読み込むことができませんでした。 一応、ソースを上げます。 function hookXhr(){ // この部分は参考にしたページのとおりです。長いので省略しました } $(document).ready(function(){ var proxy = "http://allow-any-origin.appspot.com/"; $.ajax({ url: proxy + "http://www.xxxx.xx.xx/today.xml", type: "GET", dataType: "xml", cache: false, xhr : window.XDomainRequest ? hookXhr : undefined, success: init }); }); 何か良い方法がありましたら、教えていただけると幸いです。よろしくお願いいたします。

みんなの回答

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

No1,No2回答者です。 今日は試す時間無いけど... jQueryのサイトをよく見ると、jQuery 1.5 から  $.ajax()に、crossDomainオプションがしっかり追加されてるぞ、 という事は、そもそも jQuery 1.5 使えばそのラッパー「hookXhr()」いらないんじゃない。 http://api.jquery.com/jQuery.ajax/

noname#156610
質問者

お礼

早速の返信、ありがとうございます。 jquery は microsoft の 1.5.1 を使っています。 教えていただいた、ラッパーなしで crossdomain オプションを true にするやり方を、ie8で試したのですが読み込めませんでした。 教えていただいたMSXML2.DOMDocument.6.0を使うやり方を試してみたいと思います。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

No.1です。 その場しのぎですが、とりあえずラッパーはそのままでも ・・・・・・   dataType: "text", ・・・・・・ にして、 function init(data,textStatus,jqXHR){  var xml;  if(window.ActiveXObject){   xml = new ActiveXObject("MSXML2.DOMDocument.6.0"); //又は3.0   xml.loadXML(data);  }else{   xml = jqXHR.responseXML;  }  alert(typeof xml); } で、XMLとして扱えます。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

ちょっと、調べて見ました。 そもそも、IEの XDomainRequest Object 自体が  responseText のみで responseXml が無いような雰囲気です。 http://msdn.microsoft.com/en-us/library/cc288060%28VS.85%29.aspx  そこで、dataType: "text" にしてやるとIEでも成功します。 (※まず、このラッパーは jQuery 1.4 用みたいですね。jQuery 1.5だとdataType: "text"でもIEで、失敗します。) >何か良い方法何か良い方法がありましたら、....  IEの場合は、とりあえずレスポンスデータをTEXTで受け取って、  Msxml2.DOMDocumentでDOMに流し込んでやってはどうでしょう。

関連するQ&A

専門家に質問してみよう