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>
分享到:
相关推荐
【基于DOM的Web信息自动抽取】是一种在网页数据处理中常用的技术,主要应用于网页内容的解析、抓取和分析。DOM(Document Object Model)是HTML和XML文档的标准表示,它将网页内容组织成一个可编程的节点树结构,...
如果是XML,可以使用DOM(Document Object Model)API进行解析;如果是JSON,JavaScript内置的JSON对象可以方便地进行解析。 6. 异常处理:在调用Web服务时,应考虑到可能出现的错误,如网络中断、服务器错误等。...
### Ajax在Web应用上的分析与思考 #### 一、引言 随着互联网技术的快速发展,人们对Web应用的需求也在不断提高。传统的Web应用模型由于其局限性(例如:用户体验不佳、交互性差等)已经无法满足现代用户的期待。...
在本文中,我们将深入探讨如何使用Visual FoxPro(VFP)将文件上传到Web服务器,主要涉及的技术包括XMLHTTP和XMLDOM。这两种技术是VFP与Web服务交互的重要工具,让我们一起详细了解它们。 1. Visual FoxPro(VFP)...
XMLDOM(XML Document Object Model)是处理XML文档的一个接口,它是W3C的标准,允许程序员在内存中创建、修改和查询XML文档。XMLDOM将XML文档转化为一个树形结构,使得通过JavaScript或VBScript等脚本语言可以方便...
在VB中,可以使用MSXML库(Microsoft XML Core Services)来解析和操作XML文档,例如,使用DOMDocument对象加载XML文件,然后通过SelectNodes或SelectSingleNode方法查询和修改数据。 综合以上,我们可以学习以下...
总结起来,Ajax通过XMLHttpRequest对象实现了页面的异步更新,它在Web开发中扮演着关键角色,尤其是在构建动态交互式的网页应用时。理解和掌握Ajax的工作原理以及XMLHttpRequest的使用是现代Web开发者必备的技能之一...
综上所述,Ajax技术通过一系列关键技术的结合,实现了Web应用的异步数据交互能力,大大提高了Web应用的响应速度和用户体验。随着互联网技术的不断进步,Ajax技术已经成为Web应用开发的重要组成部分,并且未来有望在...
总的来说,这个例子展示了XML在Web应用程序中的基本使用,包括如何存储结构化数据、如何用JavaScript动态加载和解析XML,以及如何根据用户交互更新页面内容。同时,也体现了早期Web开发的一些技术限制和向现代Web...
在实际应用中,XML常用于数据交换、配置文件、web服务的响应等场景,而XMLHttp则广泛应用于现代Web应用中,实现前后端的数据通信,如获取API数据、提交表单等。理解并熟练掌握XML和XMLHttp对于任何Web开发者来说都至...
XMLHTTP是ASP(Active Server Pages)中用于实现异步数据交换的关键组件,它在Web开发中扮演着重要角色,特别是在创建动态、交互式的用户界面时...理解并掌握这些技术,对于提升Web应用程序的性能和用户体验至关重要。
XMLHTTP无刷新自动实时更新数据是一种常见的Web应用程序技术,它利用了AJAX(Asynchronous JavaScript and XML)的核心组件——XMLHttpRequest对象,实现了网页在不重新加载整个页面的情况下,与服务器进行交互并...
在互联网应用开发中,XMLHTTP(XML Hypertext Transfer Protocol)是用于实现异步JavaScript和XML(AJAX)的核心组件,它允许在后台与服务器交换数据,而无需刷新整个网页。JScript 8.0是微软JavaScript的一个版本,...
**XML组件** 在这里可能是指用于处理 XML 数据的组件或库,如 DOM (Document Object Model) 和 SAX (Simple API for XML) 等。这些工具可以帮助开发者解析、操作和生成 XML 数据。 #### 三、系统背景 在企业环境中...
- "web":Web开发是构建和维护Web应用程序的过程,包括前端(用户可见的部分)和后端(服务器端处理)两大部分。此资料可能包含关于HTML、CSS、JavaScript等基础Web技术的详细讲解。 - "JavaScript":JavaScript是...
使用HTML和AJAX开发Adobe AIR 1.5应用程序可以充分利用Web技术的优势,同时享受桌面应用程序的功能性和灵活性。开发者应关注Adobe AIR的最新动态和发展趋势,持续提升自身技能,以应对不断变化的技术需求。
为了满足这一需求,微软推出了ASP.NET AJAX框架,该框架能够显著提升Web应用的用户体验,通过实现局部页面刷新,避免了传统Web应用中整页刷新带来的延迟问题。本文旨在探讨ASP.NET AJAX框架的基本原理及其在Web开发...
在创建基于DOM的Web应用时,开发者需要充分利用DOM的能力来创建复杂的用户界面。这包括使用DOM事件处理、CSS样式以及各种DOM操作方法来构建动态且反应灵敏的应用程序。 #### 七、在请求和响应中使用XML 尽管Ajax...
HTML参考手册涵盖了各种元素、属性和语义化标签的用法,而HTML5则引入了新的元素和API,如canvas画布、video视频标签、geolocation地理位置API等,进一步提升了Web应用的性能和功能。 JavaScript是一种广泛用于...
读写XML文档,VB6可以使用`MSXML2.DOMDocument`对象,它可以方便地进行XML文档的解析、修改和保存: ```vb Dim xmlDoc As New MSXML2.DOMDocument xmlDoc.Load "文件路径.xml" '找到要修改的节点 Dim node As ...