使用XMLHttpRequest与DOM对象

dom|request|xml|xmlhttprequest|对象

XMLHttpRequest对象

在使用XMLHttpRequest对象发送请求和处理响应之前,必须先用JavaScript创建一个XMLHttpRequest对象。由于XMLHttpRequest不是一个W3C标准,所以可以采用多种方法使用JavaScript来创建XMLHttpRequest的实例。IE把XMLHttpRequest实现一个ActiveX对象,其他浏览器(如Firefox、Safari和Opera)把他实现为一个本地JavaScript对象。由于存在这些差别,JavaScript代码中必须包含有关的逻辑,从而使用ActiveX技术或者使用本地JavaScript对象技术来创建XMLHttpRequest的一个事例。

如果浏览器支持ActiveX对象,就可以使用ActiveX来创建XMLHttpRequest对象。否则,就要使用本地JavaScript对象技术来创建。代码清单2-1展示了编写跨浏览器的JavaScript代码来创建XMLHttpRequest对象实例。

代码清单2-1 创建XMLHttpRequest对象的一个实例
var xmlHttp;
function createXMLHttpRequest(){
if(window.ActiveXObject){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}else if (window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}
}
可以看到,创建XMLHttpRequest对象相当容易。首先,要创建一个全局作用域变量xmlHttp来保存这个对象的引用。createXMLHttpRequest方法完成创建XMLHttpRequest实例的具体工作。这个方法只有简单的分支逻辑(选择逻辑)来确定如果创建对象。对window.ActiveXObject的调用会返回一个对象,也可能返回null,if语句会把调用返回的结果看作是true或false(如果返回对象则为true,返回null则为false),以此指示浏览器是否支持ActiveX控件,相应地得知浏览器是不是IE。如果确定是,则通过实例化ActiveXObject的一个新实例来创建XMLHttpRequest对象,并传入一个串指示要创建何种类型的ActiveX对象。在这个例子中,为构造函数提供的字符串是Microsoft.XMLHTTP,这说明我们想创建XMLHttpRequest的一个实例。

如果window.ActiveXObject调用失败(返回null),JavaScript就会转到else语句分支,确定浏览器是否把XMLHttpRequest实现为一个本地JavaScript对象。如果存在window.XMLHttpRequest,就会创建XMLHttpRequest的一个实例。

XMLHttpRequest对象的属性:
onreadystatechange 状态改变的事件触发器
readyState 对象状态(integer): 0 = 未初始化 1 = 读取中 2 = 已读取 3 = 交互中 4 = 完成
responseText 服务器进程返回数据的文本版本
responseXML 服务器进程返回数据的兼容DOM的XML文档对象
status 服务器返回的状态码, 如:404 = "文件未找到" 、200 ="成功"
statusText 服务器返回的状态文本信息

XMLHttpRequest对象的方法:
abort() 停止当前请求
getAllResponseHeaders() 作为字符串返回完整的headers
getResponseHeader("headerLabel") 作为字符串返回单个的header标签
open("method","URL"[,asyncFlag[,"userName"[, "password"]]]) 设置未决的请求的目标 URL,方法,和其他参数
send(content) 发送请求
setRequestHeader("label", "value") 设置header并和请求一起发送

方法的详细说明:
void open(string method,string url,boolean asynch,string username,string password):
这个方法会建立对服务器的调用。这是初始化一个请求的纯脚本方法,它有两个必要参数,还有3个可选参数。要提供调用的特定方法(GET、POST 或 PUT),还要提供所调用资源的URL。另外还可以传递一个Boolean值,指示这个调用是异步的还是同步的。默认值为true,表示请求本质上是异步的。如果这个参数为false,处理就会等待,直到从服务器返回响应为止。由于异步调用是使用Ajax的主要优势之一,所以倘若这个参数设置为false,从某种程度上XMLHttpRequest对象的初衷不太相符。不过,前面已经说过,在某些情况下这个参数设置为false也是有用的,比如在持久存储页面之前可以先验证用户的输入。最后两个参数不说自明,允许你指定一个特定的用户名和密码。

void send(content):
这个方法具体向服务器发出请求。如果请求声明为异步的,这个方法就会立即返回,否则它会等待直到接收到响应为止。可选参数可以是DOM对象的实例、输入流、或者串。传入这个方法的内容会作为请求体的一部分发送。

void serRequestHeader(string header,string value):
这个方法为HTTP请求中一个指定的首部设置值。他有两个参数,第一个串表示要设置的首部,第二个串表示要在首部中放置的值。需要说明,这个方法的内容会作为请求体的一部分发送。

void abort():
顾名思义,这个方法就是要停止请求。

string getAllResponseHeaders():
这个方法的核心功能对Web应用开发人员应该很熟悉了,它返回一个串,其中包含HTTP请求的所有响应首部,首部包括ContentLength、Date和URI。

string getResponseHeader(string header):
这个方法与getAllResponseHeaders()是对应的,不过它有一个参数表示你希望得到的指定首部值,并且把这个值作为串返回。

DOM对象

文档对象模型是与平台和语言无关的接口,允许程序和脚本动态地访问和更新文档的内容,结构和样式。文档可以进一步处理,处理的结果可以放回到所提供的页面中。如果服务端返回的是XML,使用responseXML即可直接创建DOM来操作这个文件。
childNodes 返回当前元素所有子元素集合
firstChil 返回当前元素的第一个子元素
lastChild 返回当前元素的最后一个子元素
nextSibling 返回紧跟在当前元素后面的元素(平级)
previousSibling 返回紧跟在当前元素之前的元素(平级)
nodeValue 指定表示元素值的读/写属性
parentNode 返回元素的父节点

DOM对象的方法:
getElementById(id) (document) 获取有指定唯一ID属性值文档中的元素
getElementsByTagName(name) 返回当前元素中有指定标记名的子元素的集合
hasChildNodes() 返回一个布尔值,指示元素是否有子元素
getAttribute(name) 返回元素的属性值,属性由name指定

动态创建内容所用的W3C DOM属性和方法
document.createElement(tagName) 文档对象上的createElement方法可以创建由tagName指定的元素。如果以串div作为方法参数,就会生成一个div元素
document.createTextNode(text) 文档对象的createTextNode方法会创建一个包含静态文本的节点
element.appendChild(childNode) appendChild方法将指定的节点childNode增加到当前元素的子节点列表
element.getAttribut(name)
element.setAttribut(name, value)获取和设置元素中name属性的值
element.insertBefore(newNode, targetNode) 这个方法将节点newNode作为当前元素的子节点插到targetNode元素前面
element.removeAttribute(name) 这个方法从元素中删除属性name
element.removeChild(childNode) 从元素中删除子元素childNode
element.replaceChild(newNode,oldNode) 将节点oldNode替换为节点newNode
element.hasChildnodes() 返回一个布尔值,指示元素是否有子元素

时间: 2024-10-30 02:56:23

使用XMLHttpRequest与DOM对象的相关文章

XMLHttpRequest对象和DOM对象教程

属性 描述 onreadystatechange 状态改变的事件触发器 readyState 对象状态(integer): 0 = 未初始化 1 = 读取中 2 = 已读取 3 = 交互中 4 = 完成 responseText 服务器进程返回数据的文本版本 responseXML 服务器进程返回数据的兼容DOM的XML文档对象 status 服务器返回的状态码, 如:404 = "文件未找到" .200 ="成功" statusText 服务器返回的状态文本信息

JS,Jquery及ExtJs不同脚本动态创建DOM对象

本文介绍简单使用JavaScript.JQuery.ExtJs进行DOM对象创建的测试,主要是使用JavaScript.JQuery.ExtJs动态创建Table对象.动态Table数据填充.多选控制. 1.简单前台数据处理 界面有点丑了,没美化界面,主要是JavaScript动态创建Table.效果图: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/T

jquery获取iframe中的dom对象(两种方法)

父窗口中操作iframe:$(window.frames["iframeChild"].document) //假如iframe的id为iframeChild 在子窗口中操作父窗口:$(window.parent.document) 接下来就可以继续获取iframe内的dom了. 获取iframe内的dom对象有两种方法 1 $(window.frames["iframeChild"].document).find("#child") 2 $(&

遍历DOM对象内的元素属性示例代码

 如何遍历DOM对象内的元素属性,例如要获取一个id为btn的按钮的所有属性该怎么实现呢?下面有个不错的教程,大家可以参考下 直接上代码:    例如要获取一个id为"btn"的按钮的所有属性   代码如下: function showBtn()  {  var tmp="";  var objBtn = document.getElementById("btn");  for(var i in objBtn)  {  tmp += i+&quo

jQuery对象与DOM对象之间的相互转换

 本文主要给大家介绍的是jQuery对象与DOM对象之间的相互转换的方法和示例,非常实用,这里推荐给有需要的小伙伴参考下.     1.jQuery对象转换成DOM对象 jQuery对象不能使用DOM中的方法,但如果对jQuery对象所提供的方法不熟悉,或者jQuery没有封装想要的方法,不得不使用DOM对象的时候,有以下两种处理方法: 1.jQuery对象是一个类似数组的对象,可以通过[index]的方法得到相应的DOM对象:   代码如下: var $cr=$("#cr") //j

jQuery对象和DOM对象之间相互转换的方法介绍

 这篇文章主要介绍了jQuery对象和DOM对象之间相互转换的方法介绍,本文讲解了jQuery对象转成DOM对象.DOM对象转换成jQuery对象方法,需要的朋友可以参考下     在讨论jQuery对象和DOM对象的相互交换之前,先约定好定义变量的风格.如果获取的对象是jQuery对象,那么在变量前加上$,例如:   代码如下: var $variable = jQuery对象; 如果获取的是DOM对象,则定义如下: 代码如下: var variable = DOM对象: 1.jQuery对象

调用DOM对象的focus方法

 要使对象获得焦点,应该调用DOM对象的focus方法,下面有个不错的示例,大家可以参考下 由于JQuery中获得的对象还是JQuery对象,对其使用focus()只是使该对象获得onFocus()函数,不能是对象获得焦点,所以要使对象获得焦点,应该调用DOM对象的focus 方法,即:   代码如下: $("#id")[0].focus();    需要注意两个函数之间的区别:   代码如下: $("#id").focus();  $("#id"

Jquery对象和Dom对象的区别分析

 如果获取的对象是jQuery对象,那么在变量前加上$,例如:   代码如下: var $variable = jQuery对象;   如果获取的是DOM对象,则定义如下:   代码如下: var variable = DOM对象:   jQuery对象不能使用DOM中的方法,但是如果对jQuery对象所提供的方法不熟悉,或者jQuery没有封装想要的方法,不得不实用DOM对象的时候,有以下两种处理方法.jQuery提供了两种方法将一个jQuery对象转换成DOm对象,即[index]和get(

jQuery对象和DOM对象使用说明_jquery

1.jQuery对象和DOM对象 第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是DOM对象,因此需要重点了解jQuery对象和DOM对象以及它们之间的关系. DOM对象,即是我们用传统的方法(javascript)获得的对象,jQuery对象即是用jQuery类库的选择器获得的对象; 复制代码 代码如下: var domObj = document.getElementById("id"); //DOM对象 var $obj = $("#id")