`
javawebsoa
  • 浏览: 409231 次
社区版块
存档分类
最新评论

XMLHTTP和DOMDocument在WEB应用上的使用问题

 
阅读更多
XMLHTTP和DOMDocument在WEB应用上的使用问题 选择自 rabbitbug 的 Blog

使用XMLHTTP可以在页面中实现无涮新自动获取服务器的新数据,
在一些聊天室中可以非常方便实现涮新新数据,同样,也可以在其它
BS应用中实现定时涮新页面数据。但在使用XMLHTTP和DOMDocument时
会碰到一些问题.一个是如何传送参数,二是中文乱码问题,还有就是如何解析XML代码。

1、参数传送和获得参数值
XMLHTTP的send方法
Send(varBody)
varBody:指令集。可以是XML格式数据,也可以是字符串,流,或者一个无符号整数数组。
也可以省略,让指令通过Open方法的URL参数代入。
send方法也可以传送参数对,各参数之间可以用&隔开,比如
var post = "id=1000&page=3";
xmlhttp.send(post);

或是在OPen方法的URL参数上加入,如
xmlhttp.open("POST", "http://localhost:8088/getData?id=1000&page=3", false);

在JSP或是Servlet中,可以和平常一样从request中得到参数
String id = (String)req.getParameter("id");
String page = (String)req.getParameter("page");

因为XMLHTTP发送的请求不是multipart/form-data格式的
因而注意在Servlet不能用multipart/form-data格式的一些方法。

2、中文乱码问题
XMLHTTP是以UTF-8编码格式发送请求和接收返回值的,因而如果不有进行编码处理,
而在发送的参数中或是接收的返回值中有中文,那么我们看到的是乱码
首先对发送的参数进行处理

var post="Years=2004-2005&TermID=秋冬";//含有中文
xmlhttp.open("POST", "http://localhost:8088/getData", false);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//要有此句
xmlhttp.setRequestHeader("Content-Length",post.length);
xmlhttp.send(post);

在servlet里取参数时,对request进行编码处理
req.setCharacterEncoding("UTF-8");
然后取参数
String years = (String)req.getParameter("Years");
String termID = (String)req.getParameter("TermID");

如果在Servlet里有输出数据到请求的页面时,如果包含有中文,
也要进行编码处理
首先对response进行编码处理
private static final String CONTENT_TYPE = "text/html; charset=UTF-8";
res.setContentType(CONTENT_TYPE);

在输出的XML代码中用UTF-8进行编码
out.println("<?xml version=/"1.0/" encoding=/"UTF-8/" standalone=/"yes/" ?>");
out.println("<root>");
out.println("<person id=1>");
out.println("<name>张三</name>");
out.println("<gender>男</gender>");
out.println("</person>");
out.println("<book id=1>");
out.println("<bookid>11</bookid>");
out.println("<title>设计模式</title>");
out.println("</book>");
...
out.println("</root>");

3、在页面中对XML代码进行解析
全部代码如下

<script language="JavaScript">
function getNodeValue(root,NodeName)
{
try{
var node = root.selectSingleNode(NodeName);
return node.text;
}catch(e){
return "";
}
}

function getPersonNodeAttributes(XmlDoc)
{
var text = "";
var obj = XmlDoc.getElementsByTagName("person");
for (var i=0;i<obj.length;i++)
{
var node = obj.item(i);
var id=node.getAttribute("id");
var name=getNodeValue(node,"name");
var gender=getNodeValue(node,"gender");
text = "id = " + id + ",name = " + name + ",gender = " + gender;
alert(text);
}
return text;
}

function getBookNodeAttributes(XmlDoc)
{
var text = "";
var obj = XmlDoc.getElementsByTagName("book");
for (var i=0;i<obj.length;i++)
{
var node = obj.item(i);
var id=node.getAttribute("id");
var bookid=getNodeValue(node,"bookid");
var title=getNodeValue(node,"title");
text = "id = " + id + ",bookid = " + bookid + ",title = " + title;
alert(text);
}
return text;
}

//setInterval("checkResult()", 1000);//定时调用checkResult方法取新数据
function checkResult()
{
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.4.0");
xmlDoc.async = false;
var post="Years=2004-2005&TermID=秋冬";
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.4.0");
xmlhttp.open("POST", "http://localhost:8088/getData", false);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-Length",post.length);
xmlhttp.send(post);
xmlDoc.loadXML(xmlhttp.responseText);
var person = getBookNodeAttributes(xmlDoc);
var book = getPersonNodeAttributes(xmlDoc);
}
</SCRIPT>


分享到:
评论

相关推荐

    大名鼎鼎的IBM公司 Ajax 培训资料

    面应用程序可能使用互联网下载更新,但运行这些应用程序的代码在桌面计算机上。Web 应用程序运行 在某处的 Web 服务器上 —— 毫不奇怪,要通过 Web 浏览器访问这种应用程序。 不过,比这些应用程序的运行代码放在...

    javascript完全学习手册2 源码

    1.3 在web页面中使用JavaScript 1.3.1 HTML的基本结构 1.3.2 在HTML中嵌入JavaScript 1.3.3 链接JavaScript文件 1.4 编写JavaScript的工具 1.4.1 使用纯文本编辑器 1.4.2 使用专业化脚本编辑工具 ...

    亮剑.NET深入体验与实战精要2

    7.6.2 通过Microsoft.XMLDOM调用Web Service 291 7.6.3 XMLHTTP POST调用Web Service 293 7.6.4 SOAP调用Web Service 293 7.7 WinForm如何调用Web Service 295 7.7.1 .NET的WinForm调用Web Service 295 7.7.2 手动...

    亮剑.NET深入体验与实战精要3

    7.6.2 通过Microsoft.XMLDOM调用Web Service 291 7.6.3 XMLHTTP POST调用Web Service 293 7.6.4 SOAP调用Web Service 293 7.7 WinForm如何调用Web Service 295 7.7.1 .NET的WinForm调用Web Service 295 7.7.2 手动...

    XMLHttpRequest手册

    压缩包“ajax.rar”内含:“《掌握Ajax.chm》...掌握 Ajax,第 6 部分: 建立基于 DOM 的 Web 应用程序 http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro6/ 掌握 Ajax,第 7 部分: 在请求和响应中使用 XML(1) ...

    什么是ajax的定义

    * 使用JavaScript操作DOM(Document Object Model)进行动态显示及交互;  * 使用 XML 和 XSLT 进行数据交换及相关操作;  * 使用 XMLHttpRequest对象与Web服务器进行异步数据交换;  * 使用 ...

    Ajax课件学习(免费)

    •DOM(Document Object Model,文档对象模型)实现动态显示和交互; •使用XMLHTTP组件XMLHttpRequest对象进行异步数据读取 •使用JavaScript绑定和处理所有数据 3.2ajax的核心XmlHttpRequest 该对象是对 ...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    正是这种区别使得XML在网络应用和信息共享上方便,高效,可扩展。所以我们相信,XML做为一种先进的数据处理方法,将使网络跨越到一个新的境界。 六. XML的严格格式 吸取HTML松散格式带来的经验教训,XML一开始就坚持...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    再比如ASP.Net内置的AJAX解决方案UpdatePanel只在部分要求不高的内网项目中才被使用,因此我们在讲解UpdatePanel的使用和原理之外,把更多的时间放在讲解企业中用的最多的JQuery AJAX解决方案上。 6、B/S系统项目(7...

    Ajax的内部实现机制、原理与实践小结

    作为创建交互式网页应用的网页开发技术,它有以下特点: 使用XHTML+CSS来表示信息 使用JavaScript操作DOM(Document Object Model)进行动态显示及交互 使用XML和XSLT进行数据交换及相关操作 使用XMLHttpRequest对象...

Global site tag (gtag.js) - Google Analytics