您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 剖析XMLHttpRequest
一、XMLHttpRequest1.XMLHttpRequest对象的概念XMLHttpRequest对象用于在后台与服务器交换数据。XMLHttpRequest对象的功能:在不重新加载页面的情况下更新网页在页面已加载后从服务器请求数据在页面已加载后从服务器接收数据在后台向服务器发送数据所有现代的浏览器都支持XMLHttpRequest对象。2.创建XMLHttpRequest对象所有现代浏览器(IE7+、Firefox、Chrome、Safari以及Opera)都内建了XMLHttpRequest对象。通过JavaScript代码,创建XMLHttpRequest对象。创建XMLHttpRequest对象的语法:xmlhttp=newXMLHttpRequest();老版本的InternetExplorer(IE5和IE6)使用ActiveX对象:xmlhttp=newActiveXObject(Microsoft.XMLHTTP);提示:可以使用XMLHttpRequest对象从服务器取回XML信息。onreadystatechange是一个事件句柄。它的值(state_Change)是一个函数的名称,当XMLHttpRequest对象的状态发生改变时,会触发此函数。状态从0(uninitialized)到4(complete)进行变化。仅在状态为4时,我们才执行代码。为什么使用Async=true?在open()的第三个参数中使用了true。该参数规定请求是否异步处理。True表示脚本会在send()方法之后继续执行,而不等待来自服务器的响应。onreadystatechange事件使代码复杂化了。但是这是在没有得到服务器响应的情况下,防止代码停止的最安全的方法。通过把该参数设置为false,可以省去额外的onreadystatechange代码。如果在请求失败时是否执行其余的代码无关紧要,那么可以使用这个参数。二、XML解析器所有现代浏览器都内建了供读取和操作XML的XML解析器。解析器把XML转换为XMLDOM对象-可通过JavaScript操作的对象。1.解析XML所有现代浏览器都有读取和操作XML的内建XML解析器。解析器功能:把XML载入内存,然后转换为可通过JavaScript访问的XMLDOM对象。微软的XML解析器与其他浏览器中的解析器之间,存在一些差异。微软的解析器支持XML文件和XML字符串(文本)的加载,而其他浏览器使用单独的解析器。不过,所有的解析器都包含遍历XML树、访问插入及删除节点(元素)及其属性的函数。2.解析XML文档把XML文档解析到XMLDOM对象中:if(window.XMLHttpRequest){//codeforIE7+,Firefox,Chrome,Opera,Safarixmlhttp=newXMLHttpRequest();}else{//codeforIE6,IE5xmlhttp=newActiveXObject(Microsoft.XMLHTTP);}xmlhttp.open(GET,books.xml,false);xmlhttp.send();xmlDoc=xmlhttp.responseXML;通过微软的XML解析器来加载XML微软的XML解析器内建于InternetExplorer5以及更高的版本中。下面的JavaScript片段把一个XML文档载入解析器中:varxmlDoc=newActiveXObject(Microsoft.XMLDOM);xmlDoc.async=false;xmlDoc.load(note.xml);上面代码的第一个行创建一个空的微软XML文档对象。第二行关闭异步加载,这样确保在文档完全加载之前解析器不会继续脚本的执行。第三行告知解析器加载名为note.xml的XML文档。在Firefox及其他浏览器中的XML解析器下面的JavaScript片段把XML文档(note.xml)载入解析器:varxmlDoc=document.implementation.createDocument(,,null);xmlDoc.async=false;xmlDoc.load(note.xml);上面代码的第一个行创建一个空的XML文档对象。第二行关闭异步加载,这样确保在文档完全加载之前解析器不会继续脚本的执行。第三行告知解析器加载名为note.xml的XML文档。3.解析XML字符串把XML字符串解析到XMLDOM对象中(把字符串txt载入解析器):txt=;txt=txt+;txt=txt+GiadaDeLaurentiis;txt=txt+2005;txt=txt+;if(window.DOMParser){parser=newDOMParser();xmlDoc=parser.parseFromString(txt,text/xml);}else//InternetExplorer{xmlDoc=newActiveXObject(Microsoft.XMLDOM);xmlDoc.async=false;xmlDoc.loadXML(txt);}注释:InternetExplorer使用loadXML()方法来解析XML字符串,而其他浏览器使用DOMParser对象。loadXML()方法用于加载字符串(文本),load()用于加载文件。三、XMLDOMXMLDOMDOM(DocumentObjectModel,文档对象模型)定义了访问和操作文档的标准方法。DOM把XML文档作为树结构来查看。能够通过DOM树来访问所有元素。可以修改或删除它们的内容,并创建新的元素。元素,它们的文本,以及它们的属性,都被认为是节点。在下面的例子中,使用DOM引用从元素中获取文本:xmlDoc.getElementsByTagName_r(to)[0].childNodes[0].nodeValuexmlDoc-由解析器创建的XML文档getElementsByTagName_r(to)[0]-第一个元素childNodes[0]-元素的第一个子元素(文本节点)nodeValue-节点的值(文本本身)跨域访问出于安全方面的原因,现代的浏览器不允许跨域的访问。这意味着,网页以及它试图加载的XML文件,都必须位于相同的服务器上。W3School的实例所打开的XML文件位于W3School的域上。假如你打算在自己的网页上使用上面的例子,则必须把XML文件放到自己的服务器上。否则,xmlDoc.load()将产生错误Accessisdenied。
本文标题:剖析XMLHttpRequest
链接地址:https://www.777doc.com/doc-2611018 .html