我写的php+ajax+xml小应用在firefox上运行不正确,在IE上运行良好(附源代码),请帮帮我!
主要问题是在firefox下,读取响应xmlObj.responseXML时不正确:
xmlObj.responseXML.xml未定义;
xmlObj.responseXML.getElementsByTagName("field_id")[0].nodeTypedValue未定义;
alert(xmlObj.responseText)后,在IE下和firefox下内容都相同。
难道是我访问XMLDom的方法有问题(我是参考《Microsoft XML 4.0 Parser SDK》文档的)?
另,发现以下语法访问field_id结点时可以成功(其它结点不能成功):
xmlObj.responseXML.getElementsByTagName("field_id")[0].firstChild.nodeValue;
谢谢!
--------------------------------myinfo.html源代码-------------------------------------
<html>
<script language="JavaScript" type="text/JavaScript">
function updateInfo()
{
/*!
ajax
*/
if (window.XMLHttpRequest)
xmlObj = new XMLHttpRequest();
else if (window.ActiveXObject)
xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
else
return false;
var strURL = "myinfo.php";
xmlObj.open("GET",strURL,false);
xmlObj.send(null);
var responseXML = xmlObj.responseXML;
document.getElementById("field_id").value =responseXML.getElementsByTagName("field_id")[0].nodeTypedValue;
document.getElementById("field_name").value =responseXML.getElementsByTagName("field_name")[0].nodeTypedValue;
document.getElementById("field_age").value =responseXML.getElementsByTagName("field_age")[0].nodeTypedValue;
}
</script>
<form name="frmInfo" method="post" action="#">
编号:<input name="field_id" type="text" id="field_id" size="50" maxlength="255"><br>
姓名:<input name="field_name" type="text" id="field_name" size="50" maxlength="255"><br>
年龄:<input name="field_age" type="text" id="field_age" size="50" maxlength="255"><br>
<input name="getInfoByAjax" type="button" id="getInfoByAjax" value="do" onClick="updateInfo();">
<input name="gebtnClear" type="reset" id="gebtnClear" value="clear" onClick="updateInfo();">
</form>
</html>
-----------------------------------myinfo.php-------------------------------
<?php
header('Content-Type: text/xml');
$arrInfo = array('id'=>'1', 'name'=>'txf', 'age'=>'23');
echo "<?xml version='1.0' encoding='GB2312' ?>";
echo '<record>';
foreach($arrInfo as $key=>$value)
echo "<field_$key>$value</field_$key>";
echo '</record>';
?>