怎么将xml中节点数据取出来

KaneTing 2009-10-25 05:29:48
近日在写一个基于Ajax的聊天室,大致如下:
当用户发言提交时,使用Ajax技术异步传输给服务器端处理程序,处理后信息为xml格式,然后调用callback函数返回,函数获取返回信息,然后在页面显示,不知道怎么从xml中获取信息?或者是在服务器代码中不要用xml格式?请高手指教!!
服务器端处理代码:
len = arrmessages.length;
s.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>");
s.append("<words ").append("num='").append(len).append("'>");//len用于记录聊天信息总共信息数,并传给用户
for (int j = len - 1; j >= num; j--) {
s.append("<word>").append((String) arrmessages[j]).append(
"</word>");//将客户端没有的、新产生的聊天记录加在其中
}
s.append("</words>");
out.println(s);

客户端Ajax代码:
var messages = httpRequest.responseXML.getElementsByTagName("words")[0];
var message = messages.getElementsByTagName("word");
var number = messages.getAttribute("num");
num = number;
var container = document.getElementById("msgdiv");//获取客户端聊天信息显示的id
for ( var i = 0; i < message.length; i++) {
var word = message[i].childNodes[0].nodeValue;
var vp = document.createElement("p");
vp.innerHTML = word;
container.insertBefore(vp, container.firstChild);//将一条聊天信息插入
}
...全文
88 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
KaneTing 2009-10-29
  • 打赏
  • 举报
回复
搞出来了!
在接收端是想用XML来接收的,可是在服务器端发过来的是text的数据,因为少了一句
response.setHeader("Content-Type","text/xml;charset=GB2312");
gdxnhhm 2009-10-28
  • 打赏
  • 举报
回复
监控一下httpRequest的状态,当readyState==4 && status == 200时再执行你的JScript code
KaneTing 2009-10-28
  • 打赏
  • 举报
回复
状态正确了,我用alert语句调试了,已经进入了。
错误说:messages为空,不知道为什么?不知道获取xml中的数据怎么错了?
yyhlove 2009-10-27
  • 打赏
  • 举报
回复
遍历所有节点
KaneTing 2009-10-27
  • 打赏
  • 举报
回复
那我也试试,我身边的一本参考书也是用json格式,然后用setTimeout()不断去取,但不知道行不行
timefinger 2009-10-26
  • 打赏
  • 举报
回复
我之前也写了一个,不过传输数据格式用的是JSON,用JavaScript的setTimeout()不断去取,更新聊天室显示.
KaneTing 2009-10-25
  • 打赏
  • 举报
回复
就是输入信息提交后,页面没有自动显示新的聊天记录,要刷新一下才出来,不知道客户端Ajax代码有什么问题?
街头小贩 2009-10-25
  • 打赏
  • 举报
回复
客户端Ajax代码:
有问题么/?

8,907

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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