AJAX学习笔记:服务器交互与XML处理
"学习AJAX笔记" AJAX(Asynchronous JavaScript and XML)是一种创建动态网页的技术,允许在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。这篇笔记主要涵盖了如何使用XMLHttpRequest对象与服务器进行通信以及处理响应,以及如何通过DOM操作动态构建和修改网页内容。 1. 与服务器沟通:发送请求和处理回应 XMLHttpRequest对象是AJAX的核心,它提供了与服务器交互的能力。有两个主要属性用于获取服务器的响应: - `responseText`:将服务器返回的数据作为字符串处理,适用于返回HTML、JSON或纯文本的情况。 - `responseXML`:如果服务器返回的是XML格式的数据,此属性会将其解析成一个XML对象,方便后续的DOM操作。 当后台返回的XML中包含尖括号(如`<`和`>`)时,为了防止解析错误,通常会在后台编码成HTML实体(`<`和`>`)。 2. 处理XML文件的DOM元素属性 DOM(Document Object Model)是XML和HTML文档的编程接口。以下是一些常用的DOM属性: - `.childNodes`:返回当前元素的所有子节点数组。 - `.firstChild`:返回当前元素的第一个子节点。 - `.lastChild`:返回当前元素的最后一个子节点。 - `.nodeValue`:读/写属性,用于获取或设置元素的值。 - `.parentNode`:返回当前元素的父节点。 - `.previousSibling`:返回当前元素前一个兄弟节点。 - `.nextSibling`:返回当前元素后一个兄弟节点。 - `.tagName`:返回当前元素的标签名称。 3. 沿XML文件来回移动的DOM元素方法 - `document.getElementById(id)`:根据ID找到页面中唯一的元素。 - `document.getElementsByTagName(name)`:返回页面中所有指定标签名的元素数组。 - `<element>.hasChildNodes()`:检查元素是否具有子节点,返回布尔值。 - `<element>.getAttribute(name)`:获取元素的指定属性值。 - `<element>.setAttribute(name, value)`:设置元素的指定属性值。 4. 动态建立内容时所用的W3CDOM属性和方法 - `document.createElement(tagName)`:创建一个新的HTML或XML元素,例如创建一个`<div>`元素。 - `document.createTextNode(text)`:创建包含静态文本的节点,用于添加纯文本内容。 - `<element>.appendChild(childNode)`:将指定的节点添加为当前元素的子节点,例如在`<select>`中添加`<option>`子节点。 - `<element>.insertBefore(Node1, Node2)`:在当前元素的子节点中,Node1之前插入Node2。 通过这些基本的AJAX和DOM操作,开发者可以实现异步数据获取、动态内容更新和页面局部刷新,从而提高用户体验。对于Java初学者,理解并掌握这些概念是进阶Web开发的重要步骤。
与服务器沟通:发送请求和处理回应
XMLHttpRequest 提供两各存取 服务器回应的属性:
1. responseText 将回应产生为字符串
2. responseXML 将回应产生为一个 XML 对象
如果后台返回的XML里包含有标签,可以先在后台把标签的"<"换成"<";而">"换成">"。这样就可以当成子元素接收。
处理 XML 文件的 DOM 元素属性:
<element>.childNodes 返回目前元素所有子元素的数组
<element>.firstChild 返回目前元素的第一个子元素
<element>.lastChild 返回目前元素的最后一个子元素
<element>.nodeValue 指定表示元素值的读/写属性
<element>.parentNode 返回元素的父节点
<element>.previousSibling 返回紧邻目前元素之前的元素
<element>.nextSibling 返回目前元素的后面的元素
<element>.tagName 返回目前元素的标签名
沿 XML 文件来回移动的 DOM 元素方法:
document.getElementById(id) 取得有指定唯一ID属性值文件中的元素
document.getElementsByTagName(name) 返回目前元素中有指定标签名的子元素的数组
<element>.hasChildNodes() 返回布尔值,表示元素是否有子元素
<element>.getAttribute(name) 返回元素的属性值,属性由name指定
动态建立内容时所用的 W3C DOM 属性和方法:
document.createElement(tagName) 建立由tagName指定的元素。比如以"div"作为参数,则生成一个div元素。
document.createTextNode(text) 建立一个包含静态文字的节点。
<element>.appendChild(childNode) 将指定节点增加到目前元素的子节点中。例如:select中增加option子节点
<element>.getAttribute(name) 取得元素中的name属性的值
<element>.setAttribute(name,value) 设定元素中的name属性的值
<element>.removeAttribute(name) 从元素中删除属性name
<element>.removeChild(childNode) 从元素中删除子元素childNode
<element>.replaceChild(newN,oldN) 将节点oldN替换为节点newN
<element>.hasChildnodes() 返回布尔值,表示元素是否有子元素
注意:文字实际上是父元素的一个子节点,所以可以使用firstChild属性来存取元素的文字节点。
有了文字节点后,可以参考文字节点的nodeValue属性来得到文字。
读取XML时,须考虑它的空格和换行符也作为子节点。
跨浏览器技巧:
1. IE不能用setAttribute设定class属性。
解决方法:同时使用 setAttribute("class","newClassName") 和 setAttribute("className","newClassName")
只使用 <element>.className = "newClassName" 也可行
2. IE中不能使用setAttribute设定style属性。即 <element>.setAttribute("style","fontweight:bold;") 不相容。
解决方法:使用 <element>.style.cssText = "fontweight:bold;"
3. 使用appendChild将<tr>元素直接增加到<table>中,则在IE中这一行并不出现,但其它浏览器却会出现。
解决方法:在<table>下增加<tbody>元素,再添加<tr>
4. IE不能直接添加按钮处理事件。如:addButton.setAttribute("onclick","addEmployee('unid');");不适用。
解决方法:addButton.onclick = function() { addEmployee('unid'); };//用匿名函数调用addEmployee()函数。
此外,onmouseover,onmouseout 等事件也要使用此方法。
Ajax概述:
Ajax是由Jesse James Garrett创造的,是"Asynchronous JavaScript+XML"的缩写
Adaptive Path公司的Jesse James Garrett如是说:
Ajax不是一种新技术,它把几种成熟的技术以新的方式组合而成,形成强大的功能,包含:
基于XHTML和CSS标准的表示;
使用document Object Model进行动态显示和交互;
使用XMLHttpRequest与服务器进行异步通信;
剩余27页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- WebLogic集群配置与管理实战指南
- AIX5.3上安装Weblogic 9.2详细步骤
- 面向对象编程模拟试题详解与解析
- Flex+FMS2.0中文教程:开发流媒体应用的实践指南
- PID调节深入解析:从入门到精通
- 数字水印技术:保护版权的新防线
- 8位数码管显示24小时制数字电子钟程序设计
- Mhdd免费版详细使用教程:硬盘检测与坏道屏蔽
- 操作系统期末复习指南:进程、线程与系统调用详解
- Cognos8性能优化指南:软件参数与报表设计调优
- Cognos8开发入门:从Transformer到ReportStudio
- Cisco 6509交换机配置全面指南
- C#入门:XML基础教程与实例解析
- Matlab振动分析详解:从单自由度到6自由度模型
- Eclipse JDT中的ASTParser详解与核心类介绍
- Java程序员必备资源网站大全