zoukankan      html  css  js  c++  java
  • 第108天:Ajax中XMLHttpRequest详解

       在Ajax应用程序中,XmlHttpRequest对象负责将用户信息以异步通信地发送到服务器端,并接收服务器返回的响应信息和数据。

       XMLHttpRequest可以提供不重新加载页面的情况下更新网页,在页面加载后再客户端向服务器请求数据,在页面加载后在服务器端接收数据,在后台向客户端发送数据

       XMLHttpRequest和Javascript

       Javascript本身并未具备向服务器发送请求的能力,要么使用window.open()方法重新打开一个页面向服务器提交请求,要么使用XMLHttpRequest对象发送请求。不同的是,前者是普通的即同步交互模式,而后者是异步交互方式。

       XMLHttpRequest提供了一系列的属性和方法,来向服务器发送异步的http请求;在服务器处理用户请求的过程中,XMLHttpRequest通过属性的状态值来实时反映http请求所处的状态,并根据这些状态指示Javascript做相应的处理;当服务器顺利完成响应用户行为的动作、并将响应数据返回时,XMLHttpRequest提供的response系列方法,可以将这些响应数据以文本、XML Document对象、Ado Stream对象或者unsigned byte数组的方式组装起来,提供给Javascript处理。

    XMLHttpRequest对象

    一、XMLHttpRequest方法:

    1、Open(string method,string url,boolean asynch,String username,string password)
         指定和服务器端交互的HTTP方法,URL地址,即其他请求信息;
         Method:表示http请求方法,一般使用"GET","POST".
         url:表示请求的服务器的地址
         asynch:表示是否采用异步方法,true为异步false为同步
         后边两个可以不指定,username和password分别表示用户名和密码,提供http认证机制需要的用户名和密码。

    2、Send(content)
         向服务器发出请求,如果采用异步方式,该方法会立即返回。
         content可以指定为null表示不发送数据,其内容可以是DOM对象,输入流或字符串。

    3、SetRequestHeader(String header,String Value)
    设置HTTP请求中的指定头部header的值为value.
    此方法需在open方法以后调用,一般在post方式中使用

    4、getAllResponseHeaders()
    返回包含Http的所有响应头信息,其中相应头包括Content-length,date,uri等内容。
    返回值是一个字符串,包含所有头信息,其中每个键名和键值用冒号分开,每一组键之间用CR和LF(回车加换行符)来分隔!

    5、getResponseHeader(String header)
    返回HTTP响应头中指定的键名header对应的值

    6、Abort() 
    停止当前http请求。对应的XMLHttpRequest对象会复位到未初始化的状态。

    二、XMLHttpRequest属性:

    1、readyState
          表示XMLHttpRequest对象的状态:0:未初始化。对象已创建,未调用open;
          1:open方法成功调用,但Sendf方法未调用;
          2:send方法已经调用,尚未开始接受数据;
          3:正在接受数据。Http响应头信息已经接受,但尚未接收完成;
          4:完成,即响应数据接受完成。

    2、Onreadystatechange
        请求状态改变的事件触发器(readyState变化时会调用这个属性上注册的javascript函数)。

    3、responseText
          服务器响应的文本内容

    4、responseXML
         服务器响应的XML内容对应的DOM对象

    5、Status
         服务器返回的http状态码。200表示“成功”,404表示“未找到”,500表示“服务器内部错误”等。

    6、statusText
          服务器返回状态的文本信息。

    使用XMLHttpRequest的五步:

       第一步:创建XMLHttpRequest对象
       第二步:注册回调方法
       第三步:设置和服务器交互的相应参数
       第四步:设置向服务器端发送的数据,启动和服务器端的交互
       第五步:判断和服务器端的交互是否完成,还要判断服务器端是否正确返回了数据

    代码展示:

    1、创建XMLHttpRequest对象

    1 <span style="font-size:18px;">//实例化XMLHttpRequest对象  
    2 function createXMLHttpRequest(){  
    3     if(window.XMLHttpRequest){  
    4         xmlHttp = new XMLHttpRequest();   
    5     }else if(window.ActiveXObject){  
    6         xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");  
    7     }  
    8 } </span>

    二、注册回调方法

          指定当服务器返回信息时客户端的处理方式。只需将相应的处理函数名称赋给XMLHttpRequest对象的onreadystatechange属性即可。

     1 <span style="font-size:18px;">xmlHttp.onreadystatechange = callBack; </span>  

    三、设置和服务器交互的相应参数

     1 <span style="font-size:18px;">xmlhttp.open("GET","ajax?name=" +userName,true); </span>  

    四、设置向服务器端发送的数据,启动和服务器端的交互

     1 <span style="font-size:18px;">xmlhttp.send(null);</span>  

    五、判断和服务器端的交互是否完成,还要判断服务器端是否正确返回了数据

     1 <span style="font-size:18px;">function callback(){    
     2      if(xmlhttp.readState==4){    
     3          //表示服务器的相应代码是200;正确返回了数据     
     4         if(xmlhttp.status==200){     
     5             //纯文本数据的接受方法     
     6             var message=xmlhttp.responseText;     
     7             //使用的前提是,服务器端需要设置content-type为text/xml     
     8             //var domXml=xmlhttp.responseXML;     
     9             //其它代码    
    10          }     
    11     }    
    12  }</span>  

    AJAX使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。

  • 相关阅读:
    Linux网络基础配置
    UVA 116 Unidirectional TSP(dp + 数塔问题)
    修改Hosts文件
    倒排索引
    可以把阿里云上面的一些介绍和视频都看看
    练练脑,继续过Hard题目
    explicit的用法
    auto_ptr的使用和注意
    我写的快排程序
    快速排序、查第k大
  • 原文地址:https://www.cnblogs.com/le220/p/8007432.html
Copyright © 2011-2022 走看看