客户端通过javascript脚本获取服务器端的文本,通过解析返回值,更新部分的网页内容。
try{ // Firefox, Opera 8+, Safari xmlObj = new XMLHttpRequest(); catch(e){ try{ // IE5+ xmlObj = new ActiveXObject("Msxml2.XMLHTTP"); catch(e){ try{ xmlObj = new ActiveXObject("Microsoft.XMLHTTP"); catch(e){ alert("您的浏览器不支持ajax"); } } } |
属性 | 描述 |
---|---|
onreadystatechange | 指定当readyState属性改变时的事件处理句柄 |
readyState | 返回 XMLHTTP 请求的当前状态 |
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文档,此属性本身不返回XMLDOMParseError,可以通过处理过的DOMDocument对象获取错误信息。 |
status | 返回当前请求的 HTTP 状态码, 长整形 仅当数据发送并接收完毕后才可获取。 |
statusText | 返回当前请求的响应行状态 |
方法 | 描述 |
---|---|
abort() | 取消当前请求 |
getallresponseheaders() | 获取响应的所有 HTTP 头 每个http头名称和值用冒号分割,并以\r\n结束。 |
getResponseHeader("Content-Type") | 从响应信息中获取指定的 HTTP 头,"text/xml" |
open(...) | 创建一个新的 HTTP 请求,并指定此请求的方法、URL以及验证信息 |
send(varBody) | 发送请求到http服务器并接收回应 此方法的同步或异步方式取决于open方法中的bAsync参数,如果bAsync == False,此方法将会等待请求完成或者超时时才会返回,如果bAsync == True,此方法将立即返回。 |
setRequestHeader() | 单独指定请求的某个 HTTP 头 |
open(strMethod, strUrl, blnAsync, strUser, strPassword) |
方法 | 描述 |
---|---|
strMethod | http方法,例如:POST、GET、PUT及PROPFIND。不区分大小写。 |
strUrl | 请求的URL地址,可以为绝对地址也可以为相对地址。 |
blnAsync | 布尔型,指定此请求是否为异步方式,默认为true。如果为真,当状态改变时会调用onreadystatechange属性指定的回调函数。 async是一个布尔值。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作。我们需要根据实际需要来指定同步方式,在某些页面中,可能会发出多个请求,甚至是有组织有计划有队形大规模的高强度的request,而后一个是会覆盖前一个的,这个时候当然要指定同步方式:Flase。 |
strUser | 如果服务器需要验证,此处指定用户名,如果未指定,当服务器需要验证时,会弹出验证窗口。 |
strPassword | 验证信息中的密码部分,如果用户名为空,则此值将被忽略。 |
值 | 描述 |
---|---|
0 | (未初始化) 对象已建立,但是尚未初始化(尚未调用open方法) |
1 | (初始化) 对象已建立,尚未调用send方法 |
2 | (发送数据) send方法已调用,但是当前的状态及http头未知 |
3 | (数据传送中) 已接收部分数据,因为响应及http头不全, 这时通过responseBody和responseText获取部分数据会出现错误, |
4 | (完成) 数据接收完毕,此时可以通过通过responseBody和responseText获取完整的回应数据 |
值 | 描述 |
---|---|
100 | Continue |
101 | Switching protocols |
200 | OK |
201 | Created |
202 | Accepted |
203 | Non-Authoritative Information |
204 | No Content |
205 | Reset Content |
206 | Partial Content |
300 | Multiple Choices |
301 | Moved Permanently |
302 | Found |
303 | See Other |
304 | Not Modified |
305 | Use Proxy |
307 | Temporary Redirect |
400 | Bad Request |
401 | Unauthorized |
402 | Payment Required |
403 | Forbidden |
404 | Not Found |
405 | Method Not Allowed |
406 | Not Acceptable |
407 | Proxy Authentication Required |
408 | Request Timeout |
409 | Conflict |
410 | Gone |
411 | Length Required |
412 | Precondition Failed |
413 | Request Entity Too Large |
414 | Request-URI Too Long |
415 | Unsupported Media Type |
416 | Requested Range Not Suitable |
417 | Expectation Failed |
500 | Internal Server Error |
501 | Not Implemented |
502 | Bad Gateway |
503 | Service Unavailable |
504 | Gateway Timeout |
505 | HTTP Version Not Supported |
示例:
function ajax_submit() { var xmlhttp; try{ xmlhttp=new XMLHttpRequest(); }catch(e){ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if( 4 == xmlhttp.readyState && 200 == xmlhttp.status ) set_data( xmlhttp ); } xmlhttp.open("post", "getdata.asp", true); xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded'); xmlhttp.send("title=" + escape("xxx")); } function set_data( xmlhttp ) |
<?xml version="1.0" encoding="GB2312"?> <% response.ContentType = "text/xml" response.Charset = "GB2312" Set xmlDom = Server.CreateObject("Microsoft.FreeThreadedXMLDOM") Set Root = xmlDom.createElement("root") Set ChildNode = xmlDom.createElement("title") ChildNode.text = request.form("title") Root.appendChild ChildNode xmlDom.appendChild Root response.write xmlDom.xml %> |