您的位置:首页 > 理论基础 > 计算机网络

ajax中XMLHttpRequest对象详解

2016-11-02 14:23 363 查看
                                                                                              ajax中XMLHttpRequest对象详解

        ajax技术的核心或者说负责ajax进行同步或者异步服务器请求是XMLHttpRequest对象。在用使用ajax技术时,其实就是操作XMLHttpRequest进行相应的业务。

 

 方法: 

  1创建XMLHttpRequest对象

    ajax本身还是js写成的,所以在使用XMLHttpRequest,是按照js语法的。
生成一个XMLHttpRequest对象如下:var xhr=new XMLHttpRequest();
注意IE浏览器9以下的版本都不支持,IE是在9版本后才归于主流,支持w3c标准的。 
考虑到兼容性,我们可以这样写。
function createXHR()
{
   var xhr=null;
  if(window.XMLHttpRequest)  //要是支持XMLHttpRequest的则采用XMLHttpRequest生成对象
     xhr=new XMLHttpRequest();
  else if(window.ActiveXobiect)//要是支持win的ActiveXobiect则采用ActiveXobiect生成对象。
    xhr=new ActiveXobiect('Microsoft.XMLHTTP');
   return xhr;
}

  2.如何利用XMLHttpRequest对象打开请求

        xhr.open('请求方式','请求url',是异步|同步)
我们通过XMLHttpRequest对象的open函数打开对服务器的连接,设置请求方式如GET POST OPTION DELETE等,请求路径,同步请求或者是异步请求(true表示异步请求,false表示同步请求)

  3. send() 

     发送请求,不传值时可以写null,get或者post请求传值时可以键值对写 username=zhangsan&pwd=12345
POST请求时,一定要注意要设置 Content-Type: application/x-www-form-urlencoded 不然无法解析&分隔符。
 

  4. abort()

     终止请求
 

  5. setRequestHeader(key,value);

     设置请求头信息

  

  6. getResponseHeader(key)

     获取某个头信息

  

  7. getAllResponseHeaders()

     获取所有的头信息

属性:

  1. responseText

     文本返回值,可以通过对象的responseText属性,获得返回的主体内容。

  2. onreadystatechange

     监测xhr对象发送接收状态变化的事件属性。xhr对象在发送到接收会有一系列状态的变化,这些状态变化时,会触发该对象的onreadystatechange回调函数,
一般我们是通过自定义一个匿名函数,在这个函数中进行我们想要的处理,将其赋给onreadystatechange事件属性,一旦触发就可以执行我们需要的操作。
 

  3. readyState

     表示自身状态,值为0~4  其中4表示返回成功。 0表示xhr对象创建成功 1表示调用open函数成功  2对方接收完头信息

     3对方接受完主体信息  4成功断开连接

  4. status

     响应行的状态码,200表示成功,403表示禁止,404表示未找到,50X系列表示服务器内部错误。

  5.statusText

     服务器返回状态,对应的文字说明
 

  

  5.响应行的 状态文字 statusText

  

  6.responseXML

    对于大量格式化文档时,或者xml文件时,回传的值。

   注意,ajax不能跨域请求,只能是请求本域内文件或后台程序。

        

         在html5中支持,使用ajax实现文件的异步上传,这一功能的实现主要是靠新增的两个对象完成

FormData和files对象。FormData主要是用来获得表单提交的信息,例如tform是一个表单的js中的dom对象,

var fd=new FormData(tform); 则生成的FormData对象就将表单对象中提交的信息全部加载如fd对象中了,

之后只要使用XMLHttpRequest对象的send()函数放送fd即可。当然FormData可以通过自身的append()函数手动加载键值对

如 fd.append('username','zhangsan');

         files是<input type='file' name='' />标签dom对象下的一个文件列表对象,可以获得上传文件的所有信息。html5支持多文件上传。在使用异步上传文件时,我们通过fd.append('name',files[0])异步上传文件。

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: