FF里AJAX取不到数据,显示undefined

cbf001 2010-11-08 08:11:49
IE里是正常的,但在FF里就显示undefined
演示地址:http://zf.cbf001.com:81/


var xhr;

function getXHR() {

//if(window.ActiveXObject){
//xhr = new ActiveXObject("Microsoft.XMLHTTP");
//}
//else{
// xhr = new XMLHttpRequest();
//}

//}

try {
xhr=new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xhr=new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
xhr=false;
}
}
if(!xhr&&typeof XMLHttpRequest!='undefined') {
xhr=new XMLHttpRequest();
}
return xhr;
}




function openXHR(method,url,callback) {
getXHR();
xhr.open(method,url);
xhr.onreadystatechange=function() {
if(xhr.readyState==4 && xhr.status == 200)return;
callback(xhr.responseText);
}
xhr.send(null);
}

function loadXML(method,url,callback) {
getXHR();
if(url.indexOf('?')>0){ // url 后面拼接随机数,或者当前时间
url+=("&t="+new Date().getTime());
}else{
url+=("?t="+new Date().getTime());
}

xhr.open(method,url);
xhr.setRequestHeader("Content-Type","text/xml");
xhr.setRequestHeader("Content-Type","GBK");
xhr.onreadystatechange=function() {
if(xhr.readyState!=4)return;
callback(xhr);
}
xhr.send(null);
}


function getList(xmlDom) {
var pllist=document.getElementById("pllist"); //获得页面pllist对象,此对象用来显示评论内容
var node=xmlDom.responseXML.getElementsByTagName("pllist");//获得pllist节点集合
var tot=xmlDom.responseXML.getElementsByTagName("pl")[0].getAttribute("tot");//获得pl节点tot属性值,这里

指评论的总数量
var curpage=xmlDom.responseXML.getElementsByTagName("pl")[0].getAttribute("curpage");//获得pl节点

curpage属性,这里指评论列表当前所在的页数,应用于翻页

if (tot!=0) { //判断当前评论数是否为空
var cont="";
var len=node.length;//获得pllist节点集合中节点的总数量
for(var i=0;i<len;i++) {
var u=node[i].childNodes[0].text; //获得节点第一个子节点的值,这里指呢称
var d=node[i].childNodes[1].text; //获得节点第二个子节点的值,这里指时间
var co=node[i].childNodes[2].text; //获得节点第三个子节点的值,这里指内容
var idnub=node[i].childNodes[3].text; //获得节点第四个子节点的值,这里指新闻ID
var ip=node[i].childNodes[4].text; //获得节点第五个子节点的值,这里指IP
var ding=node[i].childNodes[5].text; //获得节点第六个子节点的值,这里指支持
var fang=node[i].childNodes[6].text; //获得节点第七个子节点的值,这里指反对

var p=7;
var q=Math.floor(Math.random()*p+1)
switch(q)
{
case 1:
var JavascriptL = "9cf"
break;
case 2:
var JavascriptL = "f9c"
break;
case 3:
var JavascriptL = "C5FF98"
break;
case 4:
var JavascriptL = "9fc"
break;
case 5:
var JavascriptL = "c9f"
break;
case 6:
var JavascriptL = "cf9"
break;
case 7:
var JavascriptL = "FFCC66"
break;

}



cont+='<div id="topzp" style="left:0px;top:0px;position:relative; border: 1px solid #'+JavascriptL+' ;"

onmousedown="$(this,event)"><a name="'+idnub+'"></a>来自IP:('+ip+') '+u+' 发表于时

间:'+d+'<li>'+co+'</li><span onclick="del('+idnub+')" onmouseout="this.style.background=\'#f9c\'"

onmousemove="this.style.background=\'#99cc66\'">删除</span><span onclick="fd('+idnub+')" >反对

('+fang+')</span><span onclick="zs('+idnub+')" >支持('+ding+')</span><span><a href="#a"

onclick="changeTextArea('+idnub+')"/>引用</a></span></div>'; //将所获得的评论内容生成一个字符串
}
var cont1=pagecount(tot,curpage);//调用分页函数
cont+=cont1;
var cont=cont.replace(/\[\[/g,'<');
var cont=cont.replace(/\]\]/g,'>');

pllist.innerHTML=cont;//将内容呈现
} else {
pllist.innerHTML="暂无评论!";
}
}


function pagecount(tot,cur) {
var cont1="";
if (tot%15==0) { //默认每页五条,这个要求与服务器端保持一致
pages=parseInt(tot/15);
} else {
pages=parseInt(tot/15)+1;
}
for(var j=1;j<=pages;j++) {
if (j==cur) {
cont1+="<span>"+j+"</span> "
} else {
cont1+="<a href='#' style='padding:2px 5px; border: 1px #cf9

solid;cursor:hand;background:#F0FFE4;color:#0000ff' onmouseout='this.style.background=\"\"'

onmousemove='this.style.background=\"#99cc66\"' onclick='gotopage("+j+")'>"+j+"</a> "}
}
var cont1="<br><div style='margin:5px 0 0 5px;padding:5px;text-align:left;font-size : 10pt;

filter:Alpha(opacity=70); width:710px; overflow : hidden; background-color : #Ffffff;

left:0px;top:0px;position:relative;border: 1px #9cf solid;float:left;'>"+ cont1 +"</div>"
return cont1;
}

function gotopage(page) {
loadXML("get","pl_list.asp?page="+page,getList);
}

function loadDom() { //定时更新评论列表,初始化10秒钟
loadXML("get","pl_list.asp",getList);
setTimeout("loadDom()",1000000)
}


下面为FF显示效果
# 来自IP:(undefined) undefined 发表于时间:undefinedundefined
删除反对(undefined)支持(undefined)引用
# 来自IP:(undefined) undefined 发表于时间:undefinedundefined
删除反对(undefined)支持(undefined)引用
# 来自IP:(undefined) undefined 发表于时间:undefinedundefined
删除反对(undefined)支持(undefined)引用
...全文
173 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hoojo 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 showbo 的回复:]

JScript code
//FF不支持text属性,要使用nodeValue或者data属性。并且FF下文本节点也算一个节点,需要使用firstChild来获取文本节点
//========给个建议给你,不要使用childNodes来遍历节点,使用getElementsByTagName,原因上面已经说了,空白节点在ff也算一个节点,所以你的xml数据节点间存在空白或者缩进什么的,在ff下也……
[/Quote]
+
  • 打赏
  • 举报
回复
//FF不支持text属性,要使用nodeValue或者data属性。并且FF下文本节点也算一个节点,需要使用firstChild来获取文本节点
//========给个建议给你,不要使用childNodes来遍历节点,使用getElementsByTagName,原因上面已经说了,空白节点在ff也算一个节点,所以你的xml数据节点间存在空白或者缩进什么的,在ff下也算一个节点,这样使用childNodes获取到的就不一定是你需要的节点了
/*var u=node[i].childNodes[0].text;
var d=node[i].childNodes[1].text;
var co=node[i].childNodes[2].text;
var idnub=node[i].childNodes[3].text;
var ip=node[i].childNodes[4].text;
var ding=node[i].childNodes[5].text;
var fang=node[i].childNodes[6].text; */
///=========================>
var u=node[i].childNodes[0].firstChild.nodeValue;
var d=node[i].childNodes[1].firstChild.nodeValue;
var co=node[i].childNodes[2].firstChild.nodeValue;
var idnub=node[i].childNodes[3].firstChild.nodeValue;
var ip=node[i].childNodes[4].firstChild.nodeValue;
var ding=node[i].childNodes[5].firstChild.nodeValue;
var fang=node[i].childNodes[6].firstChild.nodeValue;

52,780

社区成员

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

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