日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Ajax技術(shù)原理介紹

 悟靜 2011-06-20

Ajax全稱為 Asynchronous Javascript and XML (異步Javascript和XML),是指一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù)。

Ajax的核心是Javascript的XmlHttpRequest對(duì)象,該對(duì)象在IE5中首次引入,它是一種支持異步請(qǐng)求的技術(shù),簡(jiǎn)而言之,XmlHttpRequest可以使用Javascript向服務(wù)器提出請(qǐng)求并處理響應(yīng),而不阻塞用戶。

Ajax原理:
通過XmlHttpRequest對(duì)象來向服務(wù)器發(fā)送異步請(qǐng)求,從服務(wù)器獲得數(shù)據(jù),然后用Javascript來操作DOM更新頁面。

主要包含的技術(shù):

基于Web標(biāo)準(zhǔn)的XHTML和CSS
使用DOM(Document Object Model)進(jìn)行動(dòng)態(tài)顯示及交互
使用XML和XSLT進(jìn)行數(shù)據(jù)交換及相關(guān)操作
使用XMLHttpRequest進(jìn)行異步數(shù)據(jù)查詢,檢索
使用Javascript來綁定和調(diào)用


XmlHttpRequest對(duì)象的屬性:

onreadystatechange 每次狀態(tài)改變所觸發(fā)事件的事件處理程序
responseText 從服務(wù)器進(jìn)程返回的字符串形式
responseXML 從服務(wù)器進(jìn)程返回的DOM兼容的文檔數(shù)據(jù)對(duì)象
status 從服務(wù)器返回的數(shù)字代碼,比如常見的404(未找到)和200(已就緒)
statusText 描述了HTTP狀態(tài)代碼文本;并且僅當(dāng)readyState值為3或4才可用。當(dāng)readyState為其它值時(shí)試圖

存取statusText屬性將引發(fā)一個(gè)異常
readyState 對(duì)象狀態(tài)值
 0:(未初始化)對(duì)象已建立,但是尚未初始化(尚未調(diào)用open方法)
 1:(初始化)對(duì)象已建立,代碼已經(jīng)調(diào)用了open()方法并且已經(jīng)準(zhǔn)備好把一個(gè)請(qǐng)求發(fā)送到服務(wù)器,尚未調(diào)用send方法
 2:(發(fā)送數(shù)據(jù))send方法已調(diào)用,但是還沒有收到一個(gè)響應(yīng)
 3:(數(shù)據(jù)傳輸中)已接收HTTP響應(yīng)頭部分?jǐn)?shù)據(jù),但是消息體部分還沒有完全接收結(jié)束,這時(shí)通過responseXML和ResponseText獲取部分?jǐn)?shù)據(jù)會(huì)出現(xiàn)錯(cuò)誤
 4:(完成)數(shù)據(jù)接收完成,此時(shí)可以通過responseXML和responseText獲取完整的響應(yīng)數(shù)據(jù)

XMLHttpRequest對(duì)象的方法:

open()

函數(shù)原型:
open(DOMString method,DOMString uri,boolean async,DOMString username,DOMString password)
參數(shù)說明:
第一個(gè)是發(fā)送請(qǐng)求的HTTP方法(GET,POST,PUT,DELETE或HEAD)
第二個(gè)用于指定XMLHttpRequest對(duì)象發(fā)送請(qǐng)求的URL地址
第三個(gè)參數(shù)指定是否異步發(fā)送請(qǐng)求,默認(rèn)為true,為了發(fā)送一個(gè)同步請(qǐng)求,需要設(shè)置為false
第四個(gè)參數(shù)和第五個(gè)參數(shù)對(duì)于要求認(rèn)證的服務(wù)器提供用戶名和密碼

send()

在通過調(diào)用open()方法準(zhǔn)備好一個(gè)請(qǐng)求之后,你需要把該請(qǐng)求發(fā)送到服務(wù)器。僅當(dāng)readyState值為1時(shí),你才可以調(diào)用send()方法;否則的話,XMLHttpRequest對(duì)象將引發(fā)一個(gè)異常。該請(qǐng)求被使用提供給open()方法的參數(shù)發(fā)送到服務(wù)器。當(dāng)async參數(shù)為true時(shí),send()方法立即返回,從而允許其它客戶端腳本處理繼續(xù)。在調(diào)用send()方法后,XMLHttpRequest對(duì)象把readyState的值設(shè)置為2(發(fā)送)。當(dāng)服務(wù)器響應(yīng)時(shí),在接收消息體之前,如果存在任何消息體的話,XMLHttpRequest對(duì)象將把readyState設(shè)置為3(正在接收中)。當(dāng)請(qǐng)求完成加載時(shí),它把readyState設(shè)置為4(已加載)。對(duì)于一個(gè)HEAD類型的請(qǐng)求,它將在把readyState值設(shè)置為3后再立即把它設(shè)置為4。send()方法使用一個(gè)可選的參數(shù)-該參數(shù)可以包含可變類型的數(shù)據(jù)。典型地,你使用它并通過POST方法把數(shù)據(jù)發(fā)送到服務(wù)器。另外,你可以顯式地使用null參數(shù)調(diào)用send()方法,這與不用參數(shù)調(diào)用它一樣。對(duì)于大多數(shù)其它的數(shù)據(jù)類型,在調(diào)用send()方法之前,應(yīng)該使用setRequestHeader()方法(見后面的解釋)先設(shè)置Content-Type頭部。如果在send(data)方法中的data參數(shù)的類型為DOMString,那么,數(shù)據(jù)將被編碼為UTF-8。如果數(shù)據(jù)是Document類型,那么將使用由data.xmlEncoding指定的編碼串行化該數(shù)據(jù)。

abort()

暫停與一個(gè)XMLHttpRequest對(duì)象相聯(lián)系的HTTP請(qǐng)求,從而把該對(duì)象復(fù)位到未初始化狀態(tài)

setRequestHeader()

該setRequestHeader(DOMString header,DOMString value)方法用來設(shè)置請(qǐng)求的頭部信息。當(dāng)readyState值為1時(shí),你可以在調(diào)用open()方法后調(diào)用這個(gè)方法;否則,你將得到一個(gè)異常。

getResponseHeader()

getResponseHeader(DOMString header,value)方法用于檢索響應(yīng)的頭部值。僅當(dāng)readyState值是3或4(換句話說,在響應(yīng)頭部可用以后)時(shí),才可以調(diào)用這個(gè)方法;否則,該方法返回一個(gè)空字符串。

getAllResponseHeaders()

該getAllResponseHeaders()方法以一個(gè)字符串形式返回所有的響應(yīng)頭部(每一個(gè)頭部占單獨(dú)的一行)。如果

readyState的值不是3或4,則該方法返回null。

Ajax應(yīng)用的優(yōu)勢(shì):

1. 通過異步數(shù)據(jù)傳輸,提高用戶體驗(yàn)
2. 減少不必要的數(shù)據(jù)傳輸,節(jié)省帶寬資源
3. 減輕服務(wù)器負(fù)擔(dān)

Ajax應(yīng)用的缺陷:

1. 不利于搜索引擎的優(yōu)化
2. 破壞了瀏覽器的后退機(jī)制

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多