Ajax如何返回xml?

wugui414 2011-01-01 08:52:59
servlet
response.setContentType("text/xml;charset=gb2312");
ServletActionContext.getRequest().getSession().setAttribute("qq",qq);
out.print("<?xml version='1.0' encoding='gb2312'>");
out.print("<currentinfo>");
out.print("<headpic>"+qq.getHeadpic()+"</headpic>");
out.print("<setonline>"+qq.getSetonline()+"</setonline>");
out.print("<status>"+qq.getStatus()+"</status>");
out.print("<username>"+qq.getUsername()+"</username>");
out.print("</currentinfo>");


可是在js里面接受的却不是xml,这是怎么回事?
...全文
173 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wugui414 2011-01-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 inhibitory 的回复:]

参考一下这段代码是怎么处理的吧。
Java code
把字符串的xml转换成DOM来解决CDATA问题:
<script type="text/javascript">
jQuery.createXMLDocument = function(string) {
var browserName = navigator.appName;
var d……
[/Quote]

哎呀!!!!我知道我错在哪里了!!!!!
out.print("<?xml version='1.0' encoding='gb2312'>");

应该是
out.print("<?xml version='1.0' encoding='gb2312'?>");


就少个问号!!!!!!!!!!细节决定成败
Inhibitory 2011-01-01
  • 打赏
  • 举报
回复
参考一下这段代码是怎么处理的吧。
把字符串的xml转换成DOM来解决CDATA问题:
<script type="text/javascript">
jQuery.createXMLDocument = function(string) {
var browserName = navigator.appName;
var doc;

if (browserName == 'Microsoft Internet Explorer') {
doc = new ActiveXObject('Microsoft.XMLDOM');
doc.async = 'false'
doc.loadXML(string);
} else {
doc = (new DOMParser()).parseFromString(string, 'text/xml');
}

return doc;
}

$(function() {
var xml = '<person>'
+ '<root><name><![CDATA[Biao<you>]]></name><age>23</age></root>';
+ '</person>';

var doc = $($.createXMLDocument(xml));
console.log($("name", doc).text());

});
</script>
wugui414 2011-01-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 inhibitory 的回复:]
Servlet那里没有错,你的JS是怎么写的?
[/Quote]

function result(){
var login = document.getElementById("login");
var qq = document.getElementById("qq");
var error = document.getElementById("error");
if(xmlHttp.readyState==4){
if(xmlHttp.status == 200){
var xmlDoc = xmlHttp.responseXML;
var text = xmlHttp.responseText;
//alert(xmlDoc.getElementsByTagName("username")[0].childNodes[0].nodeValue);
if(text != "false"){
login.style.display = "none";
qq.style.display = "block";
document.getElementById("who").innerHTML = xmlDoc.getElementsByTagName("username")[0].childNodes[0].nodeValue;
document.getElementById("onlineStatus").innerHTML = xmlDoc.getElementsByTagName("setonline")[0].childNodes[0].nodeValue;
document.getElementById("realStatus").innerHTML = xmlDoc.getElementsByTagName("status")[0].childNodes[0].nodeValue;
}else{
error.innerHTML="用户名或密码错误";
}
}
}
}


这是js的回调函数
babydavic 2011-01-01
  • 打赏
  • 举报
回复
var domParser = new DOMParser();
var o = domParser.parseFromString(source,'text/xml');
Inhibitory 2011-01-01
  • 打赏
  • 举报
回复
Servlet那里没有错,你的JS是怎么写的?

81,092

社区成员

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

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