- 締切済み
jQueryを使用してxmlを取得 ieでエラー
wordpressで固定ページからxmlを出力するテンプレートを選択してます。 ページにアクセスした時に吐き出されるxmlは <?xml version='1.0' encoding='UTF-8' ?> <common> <days>01</days> <days>02</days> <days>03</days> <days>04</days> <days>05</days> <days>06</days> </common> です。 別のhtmlファイルの方でjQueryで <script> $(document).ready(function () { $.ajax({ type: "GET", url: "xmlをはきだすアドレス", dataType: "feed", success: xmlParser, error: function(){ alert('Error loading XML document'); } }); }); function xmlParser(xml) { alert($(xml).children("days").length); } </script> と書いています。 この場合firefoxやsafari,chromeではalertで6と表示されますが ie6,7,8だと0となってしまいます。 どなたかieでもalertで6と表示させる方法を知っている方いませんか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- dscripty
- ベストアンサー率51% (166/325)
なれないうちは使う関数の API Reference を毎回確認することを勧めるよ! まず、$.ajax() ね。 http://api.jquery.com/jQuery.ajax/ dataType: に "feed" を指定しているけど、API Reference には次の 6つしかのっていないから、この中のどれかを指定しよう。 "xml" "html" "script" "json" "jsonp" "text" dataType: は取得するファイルがどんな種類のファイルかを指定するための項目だから、 url: が "xmlをはきだすアドレス" なら "xml" がよさそうだね。 次に、下の行の中の $(xml) ね。 > alert($(xml).children("days").length); API Reference には下のように書かれているよ。 http://api.jquery.com/jQuery/#jQuery2 | jQuery( html, [ ownerDocument ] ) | html A string of HTML to create on the fly. Note that this parses HTML, not XML. | ownerDocumentA document in which the new elements will be created "Note that this parses HTML, not XML." 「これは HTML を構文解析するけれど、XML はしないよ、気をつけてね。」 つまり、XML 形式のテキスト文字列 xml を $(xml) しても、期待の通りの結果になるとは限らないということだよ。 とりあえず、"xmlをはきだすアドレス" と同じサーバに、下の [別のhtmlファイル.html] を作成して、ブラウザで表示してみて! もちろん "xmlをはきだすアドレス" 部分は書き換えてね。 [別のhtmlファイル.html] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <title>jQuery.ajax() で xml ファイルを読み込んでみるテスト</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"> </script> <script type="text/javascript"> $(function () { $.ajax({ type: "GET", url: "xmlをはきだすアドレス", dataType: "xml", success: function (data) { alert(data.getElementsByTagName('days').length); }, error: function (){ alert('Error loading XML document'); } }); }); </script> </head> <body> <h1>jQuery.ajax() で xml ファイルを読み込んでみるテスト</h1> </body> </html> コードの中の getElementsByTagName().length については、下のページを確認してね。 http://www.w3.org/TR/DOM-Level-2-Core/ecma-script-binding.html jQuery は便利だけど、その前に DOM(Document Object Model) を知っておくと、jQuery でうまくいかなくても、自分で解決できるようになるよ。