AJax技术

ajax技术的核心内容:XMLHttpRequest对象详解

字号+ 作者:H5之家 来源:H5之家 2017-06-26 14:00 我要评论( )

ajax技术的核心内容:XMLHttpRequest对象详解

     XMLHttpRequest对象是Ajax技术最核心内容,所有现代浏览器均支持XMLHttpRequest对象,XMLHttpRequest用于在后台与服务器交换数据,这意味着可以再不重新加载整个网页的情况下,对网页的某部分进行更新。下面分析XMLHttpRequest对象的基本知识。

1、创建XMLHttpRequest对象

在不同的浏览器中创建XMLHttpRequest对象的方法不同,其中,IE创建XMLHttpRequest对象的方法如下所示:

//使用较新版本的IE创建IE兼容的对象(Msxml2.XMLHTTP) var xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); //使用较老版本的IE创建IE兼容的对象(Microsoft.XMLHTTP) var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

 而在Mozilla、Opera、Safari和大部分非IE浏览器中,都使用如下方法创建XMLHttpRequest对象。

 

var xmlhttp = new XMLHttpRequest();

 

    创建XMLHttpRequest对象时,如果在不同的浏览器中使用了不正确的创建方法,则浏览器将会报错,并且无法使用该对象,由此可见,很需要一种可以兼容不同浏览器的创建XMLHttpRequest对象的方法。例如,下面就是一个通用的解决方法:

var xmlhttp = false;//使用false作为判断条件,表示还没有创建XMLHttpRequest对象。 function createXMLHttp(){ try{ //尝试创建XMLHttpRequest对象,除IE外的浏览器都支持这个方法 xmlhttp = new XMLHttpRequest(); } catch(e){ try{ //使用较新版本的IE创建IE兼容的对象(Msxml2.XMLHTTP) xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e){ try{ //使用较老版本的IE创建IE兼容的对象(Microsoft.XMLHttp) xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch(failed){ //如果失败则保证request的值仍然为false xmlhttp = false; } } } return xmlhttp; }

 

此时可以使用如下代码判断创建XMLHttpRequest对象是否成功。

if(!xmlhttp){ //创建XMLHttpRequest对象失败 }else{ //创建成功 }

 

创建XMLHttpRequest对象完毕后,开始详细分析此对象的方法、属性以及最重要的onreadystatechange事件句柄。

 

2、XMLHttpRequest对象的方法

    XMLHttpRequest对象中的方法如下所示:

   1)、open(method,url,async):规定请求的类型、URL以及是否异步处理请求,参数的具体说明如下:

         method : 请求的类型,有get或post两种。

         url  :  文件在服务器上的位置。

        async :true(异步)或  false (同步)。

       方法open() 中的参数url是服务器上文件的地址,例如下面代码:

xmlhttp.open("GET","ajax_test.jsp,true");

 

      该文件可以使任何类型的文件,例如.xml和 .txt ,或者服务器脚本文件,例如 .asp和.jsp。

其实Ajax提及的异步是指javaScript和XML。XMLHttpRequest对象如果要用于Ajax,其方法open() 的async参数必须设置为true。

       通过Ajax技术,JavaScript无需等待服务器响应,而是在等待服务器响应时执行其他脚本,当响应就绪后对响应进行处理。

       当使用参数async设置true时,Ajax规定在响应处于onreadystatechange事件中的就绪状态时执行的函数,例如下面的代码:

xmlhttp.onreadystatechange=function(){ if(xmlhttp.readyState==4&&xmlhttp.status==200){ document.getElementById("myDIv").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","text1.txt",true); xmlhttp.send();

 

       当将参数async设置为false时,请不要编写函数onreadystatechange(),把代码放到函数send()语句的后面即可。

xmlhttp.open("GET","text1.txt",false); xmlhttp.send(); document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

 

2)、取消当前响应,关闭连接并且结束任何未决的网络活动,其语法为:

    

abort()

 

3)、getAllResponseHeaders();把HTTP响应头部作为未解析的字符串返回,用于以字符串形式返回完整的HTTP头信息,其中,包括Server、Date、Content-Type和Content-Length。语法格式:

getAllResponseHeaders()

 

4)、setRequestHeader(header,value):返回指定的HTTP、响应头部的值。

        header:规定头的名称

        value:规定头的值

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 【AJAX】AJAX技术详细解析以及实例

    【AJAX】AJAX技术详细解析以及实例

    2017-06-26 14:01

  • ajax实时刷新 使用ajax技术无刷新动态调用新浪股票实时数据

    ajax实时刷新 使用ajax技术无刷新动态调用新浪股票实时数据

    2017-06-23 12:02

  • day19-jQuery&Ajax

    day19-jQuery&Ajax

    2017-06-23 11:06

  • 残风vs逝梦的个人页面

    残风vs逝梦的个人页面

    2017-06-23 09:00

网友点评