Ajax(Asynchronous JavaScript and XML),使用戶在使用Web程序時(shí),不用在來(lái)來(lái)回回的Post了,,可以近乎實(shí)時(shí)的從客戶端收到服務(wù)器返回的信息,,而無(wú)需刷新,,極大的非富了用戶的操作體驗(yàn),。
XMLHttpRequest對(duì)象是Ajax的核心對(duì)象 不同的瀏覽器,,建立對(duì)象的方式不同這里以IE為例
var request = new ActiveXObject("Microsoft.XMLHTTP") XMLHttpRequest對(duì)象的方法和屬性:
open(request-type,url,asynch,username,password):建立到服務(wù)器的新請(qǐng)求,。
request-type 發(fā)送請(qǐng)求的類型:get,post,head url 要連接的url asynch 可選參數(shù),,如使用異步連接為true,如使用同步連接為false,,默認(rèn)值為true username 可選參數(shù),,如果需要身份驗(yàn)證,則可以在此指定用戶名,,無(wú)可選參數(shù) password 可選參數(shù),,如果需要身份驗(yàn)證,則可以在此指定口令,,無(wú)可選參數(shù) send(content):向服務(wù)器發(fā)送請(qǐng)求,。
content 要發(fā)送的內(nèi)容 abort():退出當(dāng)前請(qǐng)求。 readyState:提供當(dāng)前 HTML 的就緒狀態(tài),。
0:請(qǐng)求未初始化 1:請(qǐng)求已經(jīng)建立,,但是還沒(méi)有發(fā)送(還沒(méi)有調(diào)用 send()) 2:請(qǐng)求已發(fā)送,,正在處理中(通常現(xiàn)在可以從響應(yīng)中獲取內(nèi)容頭) 3:請(qǐng)求在處理中,,通常響應(yīng)中已有部分?jǐn)?shù)據(jù)可用了 4:響應(yīng)已完成 status:提供當(dāng)前HTML的狀態(tài)碼
401:未經(jīng)授權(quán) 403:禁止訪問(wèn) 404:沒(méi)找到訪問(wèn)頁(yè) 200:正常 XMLHttpRequest對(duì)象的Head請(qǐng)求
取得Response的Header
request.getAllResponseHeaders(); request.getResponseHeader("Server"); request.getResponseHeader("Connection"); request.getResponseHeader("Date"); request.getResponseHeader("Content-Length"); request.getResponseHeader("Keep-Alive"); request.getResponseHeader("X-Cache"); request.getResponseHeader("Content-Type"); 設(shè)置Request的Header
request.setRequest("Server") = ""; request.setRequest("Connection") = ""; request.setRequest("Date") = ""; request.setRequest("Content-Length") = ""; request.setRequest("Keep-Alive") = ""; request.setRequest("X-Cache") = ""; equest.setRequest("Content-Type") = ""; 一,、異步調(diào)用的程序示例
<script language="JavaScript">
var request = new ActiveXObject("Microsoft.XMLHTTP"); //建立XMLHttpRequest對(duì)象 function sendRequest() { url = "http://test/test.asp?Name=" + Value; //設(shè)置要發(fā)送的Url,發(fā)送的值為鍵值對(duì) request.open("get",url,true); //調(diào)用open方法
request.onreadystatechange = showMessage; //設(shè)置服務(wù)器要回調(diào)的方法 request.send(null); //發(fā)送 } function showMessage() { if(request.readyState == 4 && request.status == 200) { alert(request.responseText); } } </script> 二,、同步調(diào)用程序示例
<script language="JavaScript">
var request = new ActiveXObject("Microsoft.XMLHTTP"); //建立XMLHttpRequest對(duì)象 function sendRequest()
{ url = "http://test/test.asp?Name=" + Value; //設(shè)置要發(fā)送的Url,,發(fā)送的值為鍵值對(duì) request.open("get",url,false); //調(diào)用open方法
request.send(null); //發(fā)送 alert(request.responseText); } </script> 異步請(qǐng)求程序示例說(shuō)明:程序首先建立了XMLHttpRequest對(duì)象,之后以異步的方法執(zhí)行請(qǐng)求,,onreadystatechange是在請(qǐng)求狀態(tài)發(fā)生改變時(shí),,服務(wù)器要回調(diào)的客端方法,要在send()方法之前設(shè)置,,在showMessage()方法里,,當(dāng)readState的狀態(tài)為4且 status為200時(shí),執(zhí)行操作同步請(qǐng)求與異步請(qǐng)求的差別在于,,同步請(qǐng)求時(shí),,客戶端要行進(jìn)等待,當(dāng)服務(wù)器處理完請(qǐng)求后再在執(zhí)行以下的程序,,而異步請(qǐng)求不必如此,,客戶端的程序在請(qǐng)求發(fā)出之后就可以繼續(xù)執(zhí)行,而不必等待,,直到服務(wù)器處理后,,再回調(diào)用onreadystatechange注冊(cè)的方法。
三,、請(qǐng)求Head的程序示例
<script language="JavaScript"> var request = new ActiveXObject("Microsoft.XMLHTTP"); //建立XMLHttpRequest對(duì)象 function sendRequest() { url = "http://test/test.asp"; //要發(fā)送的Url request.open("head",url,true); //調(diào)用open方法
request.onreadystatechange = showMessage; //設(shè)置服務(wù)器要回調(diào)的方法
request.send(null); //發(fā)送 } function showMessage()
{ if(request.readyState == 4 && request.status == 200) { alert(request.getAllResponseHeaders()); //取得Header的值 } } </script> 這個(gè)方法與上一個(gè)方法的不同之處就在于open()方法的第一個(gè)參數(shù)是head,,我們可以重寫showMessage以取得相應(yīng)的Head值 function showMessage()
{ if(request.readyState == 4 && request.status == 200) { alert(request.getResponseHeader("Server")); alert(request.getResponseHeader("Connection")); alert(request.getResponseHeader("Date")); alert(request.getResponseHeader("Content-Length")); alert(request.getResponseHeader("Keep-Alive")); alert(request.getResponseHeader("X-Cache")); alert(request.getResponseHeader("Content-Type")); } } 四、發(fā)送XML數(shù)據(jù) XMLHttpRequest對(duì)象可向服務(wù)器發(fā)送XML格式的數(shù)據(jù),,但這樣做會(huì)降低程序的響應(yīng)速度,,因?yàn)榕c普通的文本相比,XML格式的數(shù)據(jù),,要處理更多額外的東西,,建議沒(méi)有必要的情況下,不要使用XML
發(fā)送XML數(shù)據(jù)的程序示例
<script language="JavaScript">
var request = new ActiveXObject("Microsoft.XMLHttpRequest"); //建立XMLHttpRequest對(duì)象 function sendXmlRequest() { xml = ""; //XML數(shù)據(jù) url = "http://test/test.asp"; //設(shè)置發(fā)送的Url request.open("post",url,false); //調(diào)用open方法 request.setRequestHeader("Content-Type","text/xml"); //設(shè)置發(fā)送請(qǐng)求的頭
request.send(xml); //要執(zhí)行的程序
} </script> 本文來(lái)自CSDN博客,,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/sony87615/archive/2009/08/26/4486480.aspx |
|