为何将xmlHttp.responseXML.documentElement传进函数后无法用dom解析?

WiseNeuro 2006-08-23 11:20:16
我写了个javascript程序,其中
var xmlInfor = xmlHttp.responseXML.documentElement;
为XMLHttpRequest对象返回的xml格式的结果.现在,我用下面的代码将其传入一个函数:
<script type="txt/javascript" language="JavaScript">
//for calling
function func_cal(arg1, xmlF){
var site = xmlF.getElementsByTagName("site")[0].firstChild.data;
return site
}
var result;
var google = "google_fans";
func= "func_call(\'"+ google +"\',("+ xmlInfor +"))";
try{
result = eval(func);
}catch(e){
alert(e);
}
</script>
当执行它时就会出现: var site = xmlF.getElementsByTagName("site")[0].firstChild.data;中函数getElementsByTagName("site")[0].firstChild.data未定义。
其中site为服务器返回的xml中的一个节点。
不知道为什么?请大家帮忙看看。谢谢了。
...全文
573 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuxinlangman 2006-08-24
  • 打赏
  • 举报
回复
你先把getElementsByTagName("site").length
alert出来看看他是不是你XML的数目
getElementsByTagName("site")[0]相关的东西给alert出来看看他是否存在
WiseNeuro 2006-08-24
  • 打赏
  • 举报
回复
没有data这个属性,
有text属性
----------------
测试了,data属性也可以用.我是在FireFox1.5.06下测试的。
WiseNeuro 2006-08-24
  • 打赏
  • 举报
回复
TO fandiy(龙霄溪舞):按你改的测试了一下,xml可以被解析了,太高兴了,谢谢了。也谢谢大家对我的热心帮助。再次感谢大家!
shenjf2000 2006-08-24
  • 打赏
  • 举报
回复
原因可能有2:
1、你返回的不是一个xml文档,或者这个xml文档格式错误
你alert一下xmlHttp.responseXML.documentElement或者xmlHttp.responseXML看看是什么结果,如果是alert object那么就不是这个原因,否则就是这个原因。

2、你的返回的xml文档中可能没有getElementsByTagName("site")[0]或者getElementsByTagName("site")[0]没有child。
如果你在IE下调试,可以直接alert(xmlHttp.responseXML.xml)查看返回的xml文档的xml代码(这个方法也可以测试原因1,判断条件是如果alert结果是xml源码那么原因1排除,否则就是原因1)。
孟子E章 2006-08-24
  • 打赏
  • 举报
回复
没有data这个属性,
有text属性
fandiy 2006-08-24
  • 打赏
  • 举报
回复
确实是如搂主所说是传值方式不对,我稍微在你的基础上修改一下,你看看

var result;
var google = "google_fans";
func= "func_call(\'"+ google +"\',xmlInfor)";//这里做了修改
try{
result = eval(func);
}catch(e){
alert(e);
}
WiseNeuro 2006-08-24
  • 打赏
  • 举报
回复
我按大家说的跟踪了一下发现,我的xml没有问题,问题出在了
func= "func_call(\'"+ google +"\',("+ xmlInfor +"))";
中将xmlInfor传进去的格式不对,在传进去xmlInfor里面的值都有,是一个合法的xml,但传进去后,却被提示:Sytax Error:missing ] after element list.
我又试了一下
func= "func_call(\'"+ google +"\',、\'("+ xmlInfor +")\')";
try{
result = eval(func);
}catch(e){
alert(e);
}
发现传进去的值变为了:([object element]),但是里面没有任何值。
func= "func_call(\'"+ google +"\',、\'"+ xmlInfor +"\')";
try{
result = eval(func);
}catch(e){
alert(e);
}
时变为了:"[object element]", 同样里面也是没有任何值。
也就是说,问题就是我传值方式不对。。。不知该怎样传?

lantersen 2006-08-24
  • 打赏
  • 举报
回复
alert(xmlHttp.responseTEXT);//看下是否取得当前内容,
另一方面,最好是贴出部分你的XML的文档内容

87,919

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧