プロが教える店舗&オフィスのセキュリティ対策術

既出でしたらすみません。
IEだとうまく動作するものが、FireFoxだと動作しません。
原因をご存知の方がいらっしゃいましたら、
ご教示願えますでしょうか。
参考書籍などをお伝えいただくだけでも構いません。

私はプログラミングの知識はありますが、
DOMについては初心者です。
よろしくお願いします。

----------HTML/JSソース

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Ajaxサンプル</title>
<script type="text/JavaScript" src="../lib/prototype.js"></script>
<script type="text/javascript">
<!--
function getFile(){
new Ajax.Request('test_xml03.xml',
{method: 'get',
onSuccess: getResponse,
onFailure: getError
});

function getResponse(req){
var varResult = req.responseXml.getElementsByTagName('result');
var varItem = varResult[0].getElementsByTagName('country');
$('result').innerHTML = varItem[0].firstChild.nodeValue;
}

function getError(req){
$('result').innerHTML = "ERROR";
}
}
//-->
</script>

</head>
<body>
<div>
<input type="button" value="データの読み込み" onClick="getFile()"/>
</div>
<div id="result" >ここにデータを読み込みます。</div>
</body>
</html>


----------XMLデータ(test_xml03.xml)

<?xml version="1.0" encoding="UTF-8" ?>
<result>
<country>アメリカ</country>
<kanji>米</kanji>
</result>

----------状況

「データの読み込み」ボタンをクリックすると、
IEでは"result"部分に 「アメリカ」と出ますが、
FireFoxだと何も起こりません。

----------環境

WindowsXP
IE6.0
FireFox2.0
prototype.jsを使用

----------補足

使用しているJavaScriptは、自分で調べた限りでは
IE/FF共に使用できるコードばかりのはずです。

いろいろと試してみましたが、わかりません。

どうかよろしくお願い申し上げます。

A 回答 (1件)

> FireFoxだと何も起こりません。


getError関数が呼び出されているのかいないのか、
または何行目まで実行できているのか、
それを調べるのが先決では?

> function getResponse(req){
> var varResult = req.responseXml.getElementsByTagName('result');
> var varItem = varResult[0].getElementsByTagName('country');
> $('result').innerHTML = varItem[0].firstChild.nodeValue;
> }
responseXmlではなくresponseXML(XMLは大文字)ですが、、、
BBS投稿時の記述ミス?


MIME-Type(Content-Typeヘッダ)はどうなっていますか?
IEはMIME-Typeにかかわらず、拡張子が.xmlとなっていればresponseXMLにその内容を格納しますが、
それ以外のブラウザでは拡張子で判断せずに、MIME-Typeで判断するため、Content-Type: text/htmlなどが出力されている場合、responseTextにしか内容が入りません。
.cgiや.aspなど内容が変化しそうな拡張子の場合は、MIME-Typeを調べているようです。
(マイナーバージョンアップにより仕様が変わっているかも知れません)

firstChildが怪しいと言えば怪しいんですが、
それを説明すると長いので、、、
    • good
    • 0
この回答へのお礼

talooさん
ご丁寧なアドバイスをありがとうございます。

さっそく、試してみました。

>responseXmlではなくresponseXML(XMLは大文字)ですが、、、
>BBS投稿時の記述ミス?

確かに、間違えて記述していました・・
これを修正しました。

>firstChildが怪しいと言えば怪しいんですが、

$('result').innerHTML = varItem[0].firstChild.nodeValue;

$('result').innerHTML = varItem[0].childNodes[0].nodeValue;
と変更しました。

これで試してみたところ、FireFoxでも正常に表示されました。

本当に助かりました。
重ねて御礼申し上げます。
ありがとうございました。

お礼日時:2007/08/14 09:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!