四、DOM
1.DOM概述
XHR对象提供了跟服务器通讯的能力,而DOM提供了访问、动态更新页面的能力。
DOM是W3C推出的文档对象模型,是表示文档和访问、操作构成文档的各种元素的API,被定义为独立于语言的标准,在javascript和java以及其他语言中都有实现。
在DOM中,HTML文档的层次机构被表示为树形结构,树的节点表示文档中的各种内容。HTML文档的树形表示主要包含表示元素或标记(如<table>和<p>)的节点和表示文本串的节点构成。
DOM定义了许多接口,其中比较通用的是其核心API:NodeList、Node、Document、Element接口,Document和Element接口都是Node接口的子接口。在JavaScript实现的DOM中还包含HTML文档专用的API,如HTMLDocument、HTMLElement。另外,DOM为许多HTML元素定义了标记专有的接口,如HTMLBodyElement、HTMLTitleElement。
2. Node接口
Node接口是文档树中所有节点的顶级父接口,定义了通用的属性和方法。
常用属性:
属性
|
说明
|
nodeType
|
代表节点的类型
|
nodeName
|
节点的名字,Element节点则代表Element的标记名称
|
parentNode
|
以Node的形式返回当前节点的父节点。如果没有父节点,为null
|
childNodes
|
以NodeList的形式返回当前节点的子节点
|
firstChild
|
以Node的形式返回当前节点的第一个子节点,如果没有子节点,则为null
|
lastChild
|
以Node的形式返回当前节点的最后一个子节点,如果没有子节点,则为null
|
previousSibling
|
以Node的形式返回当前节点的前一个兄弟节点,如果没有,则为null
|
nextSibling
|
以Node的形式返回当前节点的下一个兄弟节点,如果没有,则为null
|
nodeValue
|
如果是TextNode节点,该属性代表节点的文本值
|
注意:在java的实现中,与上述属性对应的是get/set方法,如getNodeType()、getFirstChild()等。
常用方法:
方法
|
说明
|
hasChildNodes()
|
如果当前节点拥有子节点,则返回true
|
appendChild()
|
把一个节点增加到当前节点的childNodes,给文档树增加节点
|
removeChild()
|
从文档树中删除并返回指定的子节点
|
replaceChild()
|
从文档树中删除并返回指定的子节点,用另一个节点替换
|
insertBefore()
|
在当前节点的指定子节点之前插入一个节点
|
3. Document接口
DOM 树的根节点是个Document对象,该对象的documentElement属性引用表示文档根元素的Element对象,对于HTML文档,就是<html>元素。Document接口的常用方法有:
方法
|
说明
|
createAttribute()
|
用指定的名字创建新的Attr节点
|
createElement()
|
用指定的名字创建新的Element节点
|
createTextNode()
|
用指定的名字创建新的TextNode节点
|
getElementById()
|
返回文档中具有指定id属性的Element节点
|
getElementsByTagName()
|
以NodeList形式返回文档中具有指定标记名的所有Element节点
|
继承Node接口的方法
|
|
在HTML文档中,document对象就是Document接口的一个实现,准确的说,是HTMLDocument接口的实现。document对象还有许多HTML专用的方法和属性,如:
document.write();
document.all;
document.forms[];
4. Element接口
常用方法:
方法
|
说明
|
hasAttribute()
|
如果该元素具有指定名字的属性,返回true
|
getAttribute()
|
以字符串形式返回指定属性的值
|
setAttribute()
|
把指定属性值设置为指定的字符串,不存在则添加
|
removeAttribute()
|
从元素中删除指定的属性
|
getAttributeNode()
|
以Attr节点的形式返回指定的属性
|
setAttributeNode()
|
把指定的Attr节点添加到该元素的属性列表中
|
removeAttributeNode()
|
从元素的属性列表中删除指定的Attr节点
|
getElementsByTagName()
|
返回一个NodeList,包含具体指定标记名称的该元素的所有子节点
|
继承Node接口的方法
|
|
4. NodeList接口
在javascript实现的DOM中,NodeList接口的使用类似与Node[]的形式,可以通过指定索引下标的形式引用,如:
var nodeLists = element. childNodes;
for(var i = 0;i<nodeLists.length;i++){
var node = nodeLists[i];
}
6. 其他
document.all属性,IE4提供;
document.getElementsByName()是HTMLDocument接口定义的方法;
innerHTML属性,IE4定义,后来的Netscape6、Mozilla也实现了;
五、
AJAX中的中文问题
1. 获取数据时的中文问题
XHR对象同时具有responseText属性和responseXML属性,分别获取服务器返回的文本和兼容DOM的XML文档对象。在服务器返回的数据量比较大而且数据有一定的结构时,我们通常在服务器端组织成xml格式,而在客户端通过responseXML属性获取XML文档对象,这样便于解析。比如:
var results = xmlHttp.responseXML.getElementsByTagName("result");
在返回的数据里包含中文字符时,无法直接获取responseXML属性,需要首先获取responseText属性,再利用微软的Microsoft.XMLDOM组件解析文本格式的xml字符串,如下:
var retXml = xmlHttp.responseText;
var OrgDoc = new ActiveXObject('Microsoft.XMLDOM');
OrgDoc.async = false;
OrgDoc.loadXML(retXml);
var root = OrgDoc.documentElement;
2. 提交数据时的中文问题
有时候,需要向服务器端提交中文数据,这种情况一般采用POST方法,把要提交的数据以名值对的形式作为send方法的参数,在服务器端需要做一下设置:
request.setCharacterEncoding("UTF-8");这样,request.getParameter()方法获得的参数就不会出现乱码。
(完)
分享到:
相关推荐
#### 二、为什么使用AJAX? 1. **提升用户体验**:使用AJAX可以让页面在加载新数据时不必完全重新加载,减少了用户的等待时间。 2. **减少网络流量**:只请求必要的数据,而不是整个页面,有助于节省带宽。 3. **...
然而,XML仍然在某些场景下被使用,如数据交换有严格的结构需求或与旧系统集成时。XMLHttpRequest对象可以处理XML数据,通过responseXML属性获取XML文档。 **Ajax+中文帮助文档** 这本文档可能包含了关于AJAX的...
总结起来,Ajax传输中文值的关键在于:1) 使用URL编码来传递数据;2) 设置请求头`Content-Type`为`application/x-www-form-urlencoded`;3) 服务器端正确解析POST数据并处理字符编码。遵循这些步骤,我们可以有效地...
2. **缓存问题**:Ajax请求可能被浏览器缓存,导致旧数据被重复使用。可以通过添加随机参数或设置HTTP头来防止缓存。 3. **页面状态管理**:因为Ajax请求不会改变浏览器地址栏,可能影响用户的前进后退操作。可以...
- **缓存问题**:使用IE浏览器并通过GET方式提交数据时,浏览器可能会缓存请求,导致重复请求时显示旧数据。 - **解决办法**: - 使用POST方式提交数据。 - 在请求地址后面加上一个随机数,防止缓存。 - 设置...
而对于旧版IE浏览器,则需尝试使用`new ActiveXObject("Msxml2.XMLHTTP")`或`new ActiveXObject("Microsoft.XMLHTTP")`。 ### 发送请求与处理响应 在创建了XMLHttpRequest对象之后,接下来是通过`startRequest(url...
此外,值得注意的是,虽然示例中使用的是较旧版本的JQuery库(1.7.2),但在实际项目中建议使用最新版本以获得更好的性能和支持。同时,在处理敏感数据时,还需要注意安全性问题,例如对请求参数进行验证和过滤等。
本文主要对Ajax技术中的核心组件XMLHttpRequest进行详细总结。 XMLHttpRequest对象是JavaScript中实现Ajax通信的核心,通过它可以无需刷新页面的情况下与服务器交换数据。XMLHttpRequest对象的使用分为五步: 1. ...
jQuery 1.8.0 是该库的一个重要版本,发布于2012年8月13日,它引入了一些新特性、改进和对旧特性的维护。 **API 中文版** jQuery 1.8.0 的中文API文档对于中国开发者来说尤其有价值,因为它提供了中文解释,帮助...
总结: 在处理Ajax POST请求时,特别是在涉及中文字符时,需要确保前端和后端之间的编码一致性。对于IE浏览器,可能需要额外的编码和解码步骤来保证数据的正确传递。通过在前端使用`encodeURI()`对中文字符串进行...
总结来说,jQuery API 1.7提供了一整套强大而简洁的工具,使得JavaScript开发者能更高效地操作DOM、处理事件、创建动画以及进行Ajax通信。通过学习和熟练掌握这些API,可以极大地提高前端开发效率。中文和英文版的...
总结,jQuery中文文档详尽地解释了这些概念,从基础到高级,从简单到复杂,逐步引导你成为jQuery的专家。无论你是初学者还是经验丰富的开发者,这份文档都将是你的宝贵资源。通过学习和实践,你可以利用jQuery的强大...
5. **1.6.0版本特性**:在1.6.0版本中,可能包含了一些性能优化,新的API,以及对旧版本中已知问题的修复。具体变化需要查看CHM文档中的更新日志。 **CHM文档** "Prototype-1.6.0-zh.chm"文件很可能是Prototype ...
总结来说,jQuery 1.7 中文文档是一个非常宝贵的资源,对于JavaScript开发者来说,它不仅详细解释了jQuery的核心概念和API,还提供了丰富的示例和最佳实践,帮助开发者高效地使用jQuery进行Web开发。通过深入学习和...
总结,jQuery中文API 2.2与1.83版为开发者提供了高效、易用的工具,帮助开发者快速构建交互丰富的Web应用。无论是在DOM操作、事件处理、动画效果还是Ajax通信上,jQuery都以其简洁的API和强大的功能赢得了开发者们的...
jQuery 1.3致力于跨浏览器兼容性,支持主流的现代浏览器以及较旧的IE版本,这使得开发者无需担心不同浏览器间的差异。 **总结** jQuery 1.3中文文档详细介绍了这些功能和用法,为开发者提供了一套完整的JavaScript...
### jQuery 1.4中文文档知识点总结 #### 一、新增功能:原始 XMLHttpRequest 对象的直接访问 在 jQuery 1.4 版本中,所有 AJAX 请求的成功回调函数现在都会直接接收原始的 `XMLHttpRequest` 对象作为第三个参数。...
同时,jQuery 对旧版浏览器有着良好的支持,但随着技术发展,新的版本可能会逐渐淘汰对某些旧浏览器的支持。 ### 8. 使用指南 "jQuery API 中文手册"中的 "cheatsheet.htm" 是一个快速参考指南,列出了主要的 ...
总结,jQuery中文手册是开发者高效开发的得力工具,它详细解释了jQuery的各种API和用法,无论你是初学者还是经验丰富的开发者,都能从中受益匪浅。通过学习和实践,你将能够轻松地利用jQuery创建出互动性强、用户...