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{ http_request = new ActiveXObject("Microsoft.XMLHTTP"); } 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) } }