XMLHttpRequest對象

寫在前面的話:javascript

瀏覽器大戰使得瀏覽器之間的標準沒法統一,直接致使了咱們在作Web應用系統時,不得不考慮多種兼容方案,建立XMLHttpRequest對象便是如此.html

建立XMLHttpRequest對象java

1.建立新的XMLHttpRequest對象瀏覽器

<script type="text/javascript"> var xmlHttp = new XMLHttpRequest(); </script>

咱們在IE6,IE7,IE8,Firefox3.6中分別運行這段代碼,會發現IE5.5和IE6是沒法識別XMLHttpRequest對象的.儘管微軟已經開始在拋棄IE6,但仍有無數IE6的fans在使用IE6,那麼咱們不得不爲這些用戶考慮.服務器

2.建立可在IE6下也能夠運行XMLHttpRequest對象dom

<script type="text/javascript"> var xmlHttp; //確保IE7,IE8,Firefox下能夠運行 if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); } else { //確保IE6能夠運行,這裏能夠無視更古老的IE瀏覽器了 if (window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHttp"); } } //若是均沒法建立XMLHttpRequest對象,很遺憾,就放棄Ajax應用吧 if (xmlHttp = null) { return; } </script>

3.更簡易的建立對象代碼異步

<script type="text/javascript"> var xmlHttp= window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHttp"); </script>

XMLHttpRequest對象經常使用的屬性和方法async

下面咱們來看Ajax的調用流程,主要是圍繞XMLHttpRequest對象運行的.函數

複製《完整的Ajax實例》中的代碼:post

//建立XMLHttpRequest對象
var xmlHttp = new XMLHttpRequest(); //獲取值 var username = document.getElementById("txt_username").value; var age = document.getElementById("txt_age").value; //配置XMLHttpRequest對象 xmlHttp.open("get", "Get.aspx?username=" + escape(username) + "&age=" + escape(age) + "&random=" + Math.random()); //設置回調函數 xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { document.getElementById("result").innerHTML = xmlHttp.responseText; } } //發送請求 xmlHttp.send(null); 

圍繞上述代碼,咱們發現XMLHttpRequest的使用流程:

1.建立XMLHttpRequest對象

此步驟上面已經介紹過.

2.使用open方法配置請求

open方法有五個參數,分別是:

  • request-type

發送請求的類型,主要爲Get和Post.該參數必須.

  • url

要鏈接的url.該參數必須.

  • asynch

若是但願使用異步鏈接,則爲true,不然爲false.此參數可選,默認爲true.通常爲更容易理解,通常寫爲true.

  • username

若是須要身份驗證,則能夠指定用戶名.此參數可選.

  • password

若是須要身份驗證,則能夠指定密碼.此參數可選.

open使用方法:open(request-type,url,asynch)

3.設置回調函數

回調函數必須在發送請求前設定.咱們設定了回調函數後,在隨後發送請求後,在獲得服務器的正常回應以後,就會調用設定的回調函數.

此處須要注意的是,通常正確的服務器響應會出如今xmlHttp.readyState=4且xmlHttp.status=200時.

對於服務器響應的數據,咱們能夠根據須要經過xmlHttp.responseText或xmlHttp.responseXML來獲取.

4.發送請求

發送請求使用send方法,若爲request-type爲get時,可爲send(null);若爲post,則爲send(data).

小結:

今天咱們介紹了XMLHttpRequest對象是如何建立的,後面的文章咱們來介紹open方法是如何使用的,咱們將分兩篇文章來介紹request-type分別爲get或post時的情形.

附1:

HTTP就緒狀態readyState的屬性值及含義:

屬性值 備註
0 請求沒有發出.在open以前
1 請求已經創建,但尚未發出,在open以後,send以前
2 請求已經發出,send已經被調用
3 請求已經處理,部分數據可用,服務器還沒有徹底反應
4 響應完成,能夠訪問服務器響應數據

HTTP狀態碼status的經常使用屬性值及含義:

2XX 成功

4XX 請求錯誤

屬性值 備註
200 請求成功
201 請求已實現
202 服務器已接受請求,但還沒有處理
400 錯誤請求
401 請求受權失敗
403 請求不容許
404 沒有發現文件,查詢或URI
500 服務器內部產生錯誤

 附2:

HTTP狀態碼status的所有屬性值及含義:

1xx:請求收到,繼續處理
2xx:操做成功收到,分析、接受
3xx:完成此請求必須進一步處理
4xx:請求包含一個錯誤語法或不 能完成
5xx:服務器執行一個徹底有效請求失敗

100——客戶必須繼續發出請求
101——客戶要求服務器根據請求轉換HTTP協議版本

200——交易成功
201——提示知道新文件的URL
202——接受和處理、但處理未完成
203——返回信息不肯定或不完整
204——請求收到,但返回信息爲空
205——服務器完成了請求,用戶代理必須復位當前已經瀏覽過的文件
206——服務器已經完成了部分用戶的GET請求

300——請求的資源可在多處獲得
301——刪除請求數據
302——在其餘地址發現了請求數據
303——建議客戶訪問其餘URL或訪問方式
304——客戶端已經執行了GET,但文件未變化
305——請求的資源必須從服務器指定的地址獲得
306——前一版本HTTP中使用的代碼,現行版本中再也不使用
307——申明請求的資源臨時性刪除

400——錯誤請求,如語法錯誤
401——請求受權失敗
402——保留有效ChargeTo頭響應
403——請求不容許
404——沒有發現文件、查詢或URl
405——用戶在Request-Line字段定義的方法不容許
406——根據用戶發送的Accept拖,請求資源不可訪問
407——相似401,用戶必須首先在代理服務器上獲得受權
408——客戶端沒有在用戶指定的餓時間內完成請求
409——對當前資源狀態,請求不能完成
410——服務器上再也不有此資源且無進一步的參考地址
411——服務器拒絕用戶定義的Content-Length屬性請求
412——一個或多個請求頭字段在當前請求中錯誤
413——請求的資源大於服務器容許的大小
414——請求的資源URL長於服務器容許的長度
415——請求資源不支持請求項目格式
416——請求中包含Range請求頭字段,在當前請求資源範圍內沒有range指示值,請求
也不包含If-Range請求頭字段
417——服務器不知足請求Expect頭字段指定的指望值,若是是代理服務器,多是下
一級服務器不能知足請求

500——服務器產生內部錯誤
501——服務器不支持請求的函數
502——服務器暫時不可用,有時是爲了防止發生系統過載
503——服務器過載或暫停維修
504——關口過載,服務器使用另外一個關口或服務來響應用戶,等待時間設定值較長
505——服務器不支持或拒絕支請求頭中指定的HTTP版本

---

英文版:

100:Continue
101:Switching Protocols
102:Processing

200:OK
201:Created
202:Accepted
203:Non-Authoriative Information
204:No Content
205:Reset Content
206:Partial Content
207:Multi-Status

300:Multiple Choices
301:Moved Permanently
302:Found
303:See Other
304:Not Modified
305:Use Proxy
306:(Unused)
307:Temporary Redirect

400:Bad Request
401:Unauthorized
402:Payment Granted
403:Forbidden
404:File Not Found
405:Method Not Allowed
406:Not Acceptable
407:Proxy Authentication Required
408:Request Time-out
409:Conflict
410:Gone
411:Length Required
412:Precondition Failed
413:Request Entity Too Large
414:Request-URI Too Large
415:Unsupported Media Type
416:Requested range not satisfiable
417:Expectation Failed
422:Unprocessable Entity
423:Locked
424:Failed Dependency

500:Internal Server Error
501:Not Implemented
502:Bad Gateway
503:Service Unavailable
504:Gateway Timeout
505:HTTP Version Not Supported
507:Insufficient Storage

 

來源:http://www.cnblogs.com/oneword/archive/2011/06/04/2072594.html

http://www.cnblogs.com/gotoschool/archive/2013/01/23/2873548.html   JS讀取XML文件(兼容瀏覽器)

相關文章
相關標籤/搜索