2 u011086358 u011086358 于 2013.07.30 11:16 提问

ajax无刷新(添加评论功能)

JSp,我 用ajax无刷新写了一个添加评论的功能,但是JS脚本这边解析servlet端构造的xml文档老是报错,代码如下:
(当解析“item”根节点就报错了-“不支持该属性或方法”,如果有其它的错误,请指出,该如何解决,谢谢!)
servlet:

StringBuffer sb=new StringBuffer();
sb.append("");
sb.append(""+counts+"");
for (int i = 0; i Comments c=coms.get(i);
sb.append("");

sb.append(""+c.getU().getUname()+"");
sb.append(""+c.getU().getPic()+"");
sb.append(""+c.getCdate()+"");
sb.append(""+c.getCcontent()+"");
sb.append("");
}
sb.append("");
out.print(sb.toString());

js:脚本

var xml=xmlhttp.responseText;
if(xml){
var node=xml.getElementsByTagName("item");
var cElement=node.getElementsByTagName("counts").nodeValue;
document.getElementById("plc").innerHTML="评论("+cElement+")";
//分别存放想要的数据
var uname;
var pic;
var cdate;
var ccontent;
//便利节点
for ( var i = 0; i < cElement; i++) {
var c=node.getElementsByTagName("c"+i+"");
uname[i]=c[0].firstChild.nodeValue;
pic[i]=c[1].firstChild.nodeValue;
cdate[i]=c[2].firstChild.nodeValue;
ccontent[i]=c[3].firstChild.nodeValue;
var divElement=document.getElementById("doWusx");
divElement.innerHTML=" " +
"" +
"" +
"" +
"来自 : "+uname[i]+"
日期 : "+cdate[i]+"" +
""+
""+
"内容:"+ccontent[i]+" "+
"
"+
""+
"
"+
"";
}
当解析“item”根节点就报错了-“不支持该属性或方法”,如果有其它的错误,请指出,该如何解决,谢谢!

1个回答

u010618015
u010618015   2013.07.30 11:25
已采纳

应该是这句
var xml=xmlhttp.responseText;
if(xml){
var node=xml.getElementsByTagName("item");

本来你返回的是responseText类型,据我所知是字符串,当然没有getElementsByTagName()方法
应该返回responseXML对象才对

u010618015
u010618015 你使用Ajax的时候不是需要请求的类型吗? 我记得请求到servlet的时候要设置编码和格式的 要将它设置为XML 具体我也忘了
4 年多之前 回复
u011086358
u011086358 我已经改为responseXML,根节点可以获得对象,但是子节点无法获得对象和值,servlet构造的xml有误吗? 怎么获得xmll节点的值?
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!