- 締切済み
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 }); }); 何か良い方法がありましたら、教えていただけると幸いです。よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- yyr446
- ベストアンサー率65% (870/1330)
No1,No2回答者です。 今日は試す時間無いけど... jQueryのサイトをよく見ると、jQuery 1.5 から $.ajax()に、crossDomainオプションがしっかり追加されてるぞ、 という事は、そもそも jQuery 1.5 使えばそのラッパー「hookXhr()」いらないんじゃない。 http://api.jquery.com/jQuery.ajax/
- yyr446
- ベストアンサー率65% (870/1330)
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)
ちょっと、調べて見ました。 そもそも、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に流し込んでやってはどうでしょう。
お礼
早速の返信、ありがとうございます。 jquery は microsoft の 1.5.1 を使っています。 教えていただいた、ラッパーなしで crossdomain オプションを true にするやり方を、ie8で試したのですが読み込めませんでした。 教えていただいたMSXML2.DOMDocument.6.0を使うやり方を試してみたいと思います。