- ベストアンサー
Ajax:getElementsByTagNameで取得できない
Ajaxでプログラミングをしております。 サーバに問い合わせた答えをXMLで返しております。 Ajaxで問い合わせて、 alert(req.responseText); とすれば、XMLが画面に表示されて、答えが返っていることを確認できています。 ====XMLデータは以下=== <?xml version="1.0" encoding="utf-8" ?> - <results> - <result> <x>139.1748046875</x> <y>37.26530995561875</y> <kiji>トラックバックテスト</kiji> <url>http://blog.livedoor.jp/***/archives/50669333.html</url> <contents>test trackbackAAAAAAAAAAAAAAAAAAAA</contents> <btitle>必勝!株式投資!</btitle> <date>10.24.06</date> </result> - <result> <x>139.1748046875</x> <y>37.26530995561875</y> <kiji>下げシグナル</kiji> <url>http://blog.livedoor.jp/***/archives/50533401.html</url> <contents>カブログへの清き一票よろしくお願いします </contents> <btitle>必勝!株式投資!</btitle> <date>2006.10.24</date> </result> </results> ====ここまで===== XMLの<result>タグでブロックごとに分解し、その分解されたブロックから <X>の値、<contents>の値を取ろうとしております。 ためしに、 var result = req.responseXML.getElementsByTagName('result'); alert(result.length); とやって、<result>タグで2ブロックにきれているか、確かめたのですが、 0と返ってきます。 何かやり方がわるいのでしょうか? サーバプログラム、クライアントプログラムとも、UTF-8でやってます。 IEは6.0です。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
以下のソースで試してください。 保存する時は必ず文字コードをutf-8で指定して保存するように。 xmlは書式に厳格です。余分なスペースなんかも気にしてください。 良くわからない場合は、ブラウザーで開くとパースできます。 ブラウザーで開ければだいたい大丈夫なんじゃないでしょうか・・ <?xml version="1.0" encoding="utf-8"?> <results> <result> <x>139.1748046875</x> <y>37.26530995561875</y> <kiji>トラックバックテスト</kiji> <url>?http://blog.livedoor.jp/***/archives/50669333.html</url> <contents>test trackbackAAAAAAAAAAAAAAAAAAAA</contents> <btitle>必勝!株式投資!</btitle> <date>10.24.06</date> </result> <result> <x>139.1748046875</x> <y>37.26530995561875</y> <kiji>下げシグナル</kiji> <url>http://blog.livedoor.jp/***/archives/50533401.html</url> <contents>カブログへの清き一票よろしくお願いします</contents> <btitle>必勝!株式投資!</btitle> <date>2006.10.24</date> </result> </results>
その他の回答 (2)
- NTJ
- ベストアンサー率44% (46/103)
リクエストの解答は来ているようなので、いっそXMLパーサーに頼らないで自力で解析しちゃったらいかがです?(笑 var X=req.responseText.match(/<x>[^<]+<\/x>/g); var R=req.responseText.match(/<contents>[^<]+<\/contents>/g); たったこれだけで、配列の X と R へ必要な値が取れちゃうと思うのですが。 ついでに、リクエストの側もXMLHttpReqestだけに絞り込んでしまえば、多分30行程度で必要な関数は完成してしまうのではないかと。
お礼
PEARで楽したかったので・・・ でも、これだけでできちゃうんですよね・・・ ありがとうございました。
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
alert(req.responseXML); には何が入ってますか? > - <results> XMLのソースに - が入っているのでしょうか? もしそうならXMLとしての文法を確認してみてはいかがでしょうか。
お礼
-は入っておりません。 ただ、IEで開くと、XMLが解析できないと出てしまいます・・・ 文字コードを変えたら上手く表示されたり・・・ PEARを使って、DBの情報をそのままXMLに置き換えてるんですけどね・・
お礼
ありがとうございます。IEで受信したXMLは開けなかったので、文字コードに問題がありそうです。 でもJSONでやったら、さっくり出来てしまったので、JSONで作っております。 ご回答ありがとうございました。 ちなみに出来たサイトはこちらです。 ■世界中の釣りブログのトラックバックを地図に貼り付け! World Fishing Reports http://wfr.from.tv/ です。