XMLHttpRequest类成员和实例

    技术2022-05-11  79

    XMLHttpRequest对象XMLHttpRequest  提供客户端同http服务器通讯的协议一:创建IE : http_request = new ActiveXObject("Msxml2.XMLHTTP");     http_request = new ActiveXObject("Microsoft.XMLHTTP");非IE: http_request = new XMLHttpRequest();

    二:onreadystatechange指定当readyState属性改变时的事件处理句柄语法http_request .onreadystatechange = funcMyHandler;

    三:readyState返回XMLHTTP请求的当前状态变量,此属性只读,状态用长度为4的整型表示.定义如下:0 (未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)1 (初始化) 对象已建立,尚未调用send方法2 (发送数据) send方法已调用,但是当前的状态及http头未知3 (数据传送中) 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误,4 (完成) 数据接收完毕,此时可以通过通过responseBody和responseText获取完整的回应数据

    四:responseBody返回某一格式的服务器响应数据

    五:responseStream以Ado Stream对象的形式返回响应信

    六:responseText将响应信息作为字符串返回备注

    变量,此属性只读,将响应信息作为字符串返回。XMLHTTP尝试将响应信息解码为Unicode字符串,XMLHTTP默认将响应数据的编码定为UTF-8,如果服务器返回的数据带BOM(byte -order mark),XMLHTTP可以解码任何UCS-2 (big or little endian)或者UCS-4 数据。注意,如果服务器返回的是xml文档,此属性并不处理xml文档中的编码声明。你需要使用responseXML来处理。

    七:responseXML 将响应信息格式化为Xml Document对象并返回备注

    变量,此属性只读,将响应信息格式化为Xml Document对象并返回。如果响应数据不是有效的XML文档,此属性本身不返回XMLDOMParseError,可以通过处理过的DOMDocument对象获取错误信息。

    八:status 返回当前请求的http状态码长整形标准http状态码,定义如下:Number Description100Continue101Switching protocols200OK201Created202Accepted203Non-Authoritative Information204No Content205Reset Content206Partial Content300Multiple Choices301Moved Permanently302Found303See Other304Not Modified305Use Proxy307Temporary Redirect400Bad Request401Unauthorized402Payment Required403Forbidden404Not Found405Method Not Allowed406Not Acceptable407Proxy Authentication Required408Request Timeout409Conflict410Gone411Length Required412Precondition Failed413Request Entity Too Large414Request-URI Too Long415Unsupported Media Type416Requested Range Not Suitable417Expectation Failed500Internal Server Error501Not Implemented502Bad Gateway503Service Unavailable504Gateway Timeout505HTTP Version Not Supported备注长整形,此属性只读,返回当前请求的http状态码,此属性仅当数据发送并接收完毕后才可获取。

    九:xmlhttprequest:statusText成员statusText返回当前请求的响应行状态

    十:abort()方法取消当前请求

    十一:getallresponseheaders()方法获取响应的所有http头备注

    每个http头名称和值用冒号分割,并以/r/n结束。当send方法完成后才可调用该方法。

    十二:getResponseHeader 从响应信息中获取指定的http头例:xmlhttp.getResponseHeader("Server");输出http头中的server列:当前web服务器的版本及名称。备注

    当send方法成功后才可调用该方法。如果服务器返回的文档类型为"text/xml", 则这句话xmlhttp.getResponseHeader("Content-Type");将返回字符串"text/xml"。可以使用 getAllResponseHeaders方法获取完整的http头信息。

    十三:open()方法 创建一个新的http请求,并指定此请求的方法、URL以及验证信息语法

    XMLHttpRequest.open(strMethod, strUrl, blnAsync, strUser, strPassword);

    参数strMethodhttp方法,例如:POST、GET、PUT及PROPFIND。大小写不敏感。strUrl请求的URL地址,可以为绝对地址也可以为相对地址。blnAsync[可选]布尔型,指定此请求是否为异步方式,默认为true。如果为真,当状态改变时会调用onreadystatechange属性指定的回调函数。async是一个布尔值。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作。我们需要根据实际需要来指定同步方式,在某些页面中,可能会发出多个请求,甚至是有组织有计划有队形大规模的高强度的request,而后一个是会覆盖前一个的,这个时候当然要指定同步方式:Flase。strUser[可选]如果服务器需要验证,此处指定用户名,如果未指定,当服务器需要验证时,会弹出验证窗口。strPassword[可选]验证信息中的密码部分,如果用户名为空,则此值将被忽略。备注调用此方法后,可以调用send方法向服务器发送数据。

    十四:send()方法发送请求到http服务器并接收回应XMLHttpRequest.send(varBody);参数varBody欲通过此请求发送的数据。备注此方法的同步或异步方式取决于open方法中的bAsync参数,如果bAsync == False,此方法将会等待请求完成或者超时时才会返回,如果bAsync == True,此方法将立即返回。

    十五:setRequestHeader 单独指定请求的某个http头Example:

    var  http_request =   false ;         function  send_request(url)          {    ///初始化、指定处理函数、发送请求的函数                if (window.XMLHttpRequest) //Mozila        {         http_request = new XMLHttpRequest();         if (http_request.overrideMimeType)           {              http_request.overrideMimeType("text/xml");            }        }         else         if (window.ActiveXobject) //IE         {           try           {           http_request = new ActiveXObject("Msxml2.XMLHTTP");           }           catch (e)           {               try                catch (e) { }           }         }                  if (!http_request)  // 异常,创建对象实例失败         {           alert("不能创建XMLHttpRequest实例!!");           return false;         }         // 指定当服务器返回信息时客户端的处理方式        http_request.onreadystatechange = processRequest;        // <SPAN twffan="done">确定发送请求的方式和URL以及是否同步执行下段代码        http_request.open("GET",url,true);        http_request.send(null);        }          // ******************************************************************          function  processRequest()         {            if (http_request.readyState == 4// 判断对象状态            {               if (http_request.status == 200)  // 请求结果已经成功返回               {                  alert(http_request.responseBody);                  var a = document.getElementById("hh").innerText;                  if (a =="1")                  {                    alert("不可用!!");                  }               }               else  //页面不正常               {                  alert("你请求的页面不正常");               }            }        }          //  ********************************************************************          function  userCheck()         {           var f = document.Form1;           var userName = f.username.value;           if (userName == "")           {              alert("用户名不能为空!!");              f.username.focus();              return false;           }           else           {              send_request("alert.aspx?username="+userName)           }        }  

    最新回复(0)