摘要:技術(shù)的核心是對(duì)象即。收到響應(yīng)后,響應(yīng)的數(shù)據(jù)會(huì)自動(dòng)填充對(duì)象的屬性,相關(guān)的屬性有作為響應(yīng)主體被返回的文本。收到響應(yīng)后,一般來(lái)說(shuō),會(huì)先判斷是否為,這是此次請(qǐng)求成功的標(biāo)志。中的版本會(huì)將設(shè)置為,而中原生的則會(huì)將規(guī)范化為。會(huì)在取得時(shí)報(bào)告的值為。
Ajax(Asynchronous Javascript + XML)技術(shù)的核心是XMLHttpRequest對(duì)象,即: XHR。雖然名字中包含XML,但它所指的僅僅是這種無(wú)須刷新頁(yè)面即可從服務(wù)器端獲取數(shù)據(jù)的技術(shù),其通信與數(shù)據(jù)格式無(wú)關(guān),并不一定是XML數(shù)據(jù)。
XMLHttpRequest對(duì)象IE7+、Firefox、Opera、Chrome 和 Safari 都支持原生的XHR對(duì)象。我們可以直接使用XMLHttpRequest構(gòu)造函數(shù)來(lái)創(chuàng)建XHR對(duì)象。
var xhr = new XMLHttpRequest();
雖然,IE7之前版本的瀏覽器中,創(chuàng)建xhr的方法與此有所不同,但是,前端技術(shù)發(fā)展到今天,已經(jīng)很少有業(yè)務(wù)需求是要支持IE7之前的版本了。因此,這里我略過(guò)這一情況。
XHR的用法使用 XHR對(duì)象的時(shí)候,要調(diào)用的第一個(gè)方法是open(),它接受3個(gè)參數(shù):
要發(fā)送請(qǐng)求的類(lèi)型,如: get/post
請(qǐng)求的url
是否異步發(fā)送請(qǐng)求,這個(gè)參數(shù)是一個(gè)布爾值
xhr.open("get", "example.php", false)
注意:open()方法的調(diào)用并不會(huì)真正發(fā)送請(qǐng)求,僅僅是啟動(dòng)一個(gè)請(qǐng)求以備發(fā)送!
另外,只能向同一個(gè)域中使用相同端口和協(xié)議的URL發(fā)送請(qǐng)求,否則,會(huì)出現(xiàn)錯(cuò)誤。
在執(zhí)行open()方法之后,必須再調(diào)用send()方法,才會(huì)真正發(fā)起ajax請(qǐng)求。
xhr.open("get", "example.txt", false); xhr.send(null);
send()方法接收一個(gè)參數(shù),即:要作為請(qǐng)求主體發(fā)送的數(shù)據(jù)。如果不需要發(fā)送數(shù)據(jù),那么必須傳入null,因?yàn)樵搮?shù)對(duì)于部分瀏覽器而言是必需的。
本例中的請(qǐng)求是同步的,Javascript代碼會(huì)等到服務(wù)器響應(yīng)之后再執(zhí)行。
收到響應(yīng)后,響應(yīng)的數(shù)據(jù)會(huì)自動(dòng)填充XHR對(duì)象的屬性,相關(guān)的屬性有:
responseText: 作為響應(yīng)主體被返回的文本。
responseXML: 如果響應(yīng)的內(nèi)容類(lèi)型是"text/xml"或者"application/xml",那么這個(gè)屬性中將保存著包含響應(yīng)數(shù)據(jù)的XML DOM文檔。
status: 響應(yīng)的HTTP狀態(tài)
statusText: HTTP狀態(tài)的說(shuō)明
無(wú)論內(nèi)容類(lèi)型是什么,響應(yīng)主體的內(nèi)容都會(huì)保存到responseText屬性中,而對(duì)于非XML數(shù)據(jù)而言,responseXML 屬性的值將會(huì)是null。
收到響應(yīng)后,一般來(lái)說(shuō),會(huì)先判斷 status 是否為200,這是此次請(qǐng)求成功的標(biāo)志。此時(shí),responseText屬性的內(nèi)容已經(jīng)就緒,而且在內(nèi)容類(lèi)型正確的情況下,responseXML也能夠訪問(wèn)了。
另外,狀態(tài)碼status如果是304,那么表示請(qǐng)求的資源沒(méi)有被修改,可以直接使用瀏覽器中的緩存,當(dāng)然,這樣的響應(yīng)也是有效的。
if( (xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 ){ alert(xhr.responseText); } else{ alert("fail! status:" + xhr.status); }
有的瀏覽器會(huì)錯(cuò)誤地報(bào)告 204 的狀態(tài)代碼。IE中 XHR 的ActiveX版本會(huì)將204設(shè)置為1223,而IE中原生的 XHR 則會(huì)將 204 規(guī)范化為 200。Opera會(huì)在取得204時(shí)報(bào)告 status的值為0。
參考文章:http://www.4455q.com/ajax-com...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82924.html
摘要:設(shè)定的值的時(shí)候,即已自動(dòng)暗示類(lèi)型。第五章循環(huán)自我重復(fù)的風(fēng)險(xiǎn)數(shù)組用于在單一場(chǎng)所存儲(chǔ)多段數(shù)據(jù)數(shù)組的頁(yè)碼稱(chēng)為鍵,索引只是一種形式特殊的鍵,它是數(shù)值鍵存儲(chǔ)在數(shù)組里的數(shù)據(jù)不一定為相同類(lèi)型并不要求二維數(shù)組具有相同的行數(shù),但是最好保持一致。 ** 簡(jiǎn)介 **書(shū)名:《Head First JavaScript》中文譯名:《深入淺出JavaScript》著:Michael Morrison編譯:O’R...
摘要:表示應(yīng)該立即下載腳本,但不應(yīng)妨礙頁(yè)面中的其他操作可選。表示通過(guò)屬性指定的代碼的字符集。表示腳本可以延遲到文檔完全被解析和顯示之后再執(zhí)行。實(shí)際上,服務(wù)器在傳送文件時(shí)使用的類(lèi)型通常是,但在中設(shè)置這個(gè)值卻可能導(dǎo)致腳本被忽略。 第1章 JavaScript 簡(jiǎn)介 雖然JavaScript和ECMAScript通常被人們用來(lái)表達(dá)相同的含義,但JavaScript的含義比ECMA-262要多得多...
摘要:本質(zhì)上是由一組無(wú)序名值對(duì)組成的。浮點(diǎn)數(shù)值的最高精度是位小數(shù),但在進(jìn)行計(jì)算時(shí)其精度遠(yuǎn)遠(yuǎn)不如證書(shū)。例如這是使用基于數(shù)值的浮點(diǎn)計(jì)算的通病,并非獨(dú)此一家數(shù)值范圍。 函數(shù)名不能使用關(guān)鍵字(typeof不行但typeOf可以,區(qū)分大小寫(xiě)) 標(biāo)識(shí)符就是指變量、函數(shù)、屬性的名字,或者函數(shù)的參數(shù)。 第一個(gè)字符必須是一個(gè)字母、下劃線(_)或者一個(gè)美元符號(hào)($) 其他字符可以是字母、下劃線、美元符號(hào)或...
摘要:具體說(shuō)就是執(zhí)行流進(jìn)入下列任何一個(gè)語(yǔ)句時(shí),作用域鏈就會(huì)得到加長(zhǎng)語(yǔ)句的塊。如果局部環(huán)境中存在著同名的標(biāo)識(shí)符,就不會(huì)使用位于父環(huán)境中的標(biāo)識(shí)符訪問(wèn)局部變量要比訪問(wèn)全局變量更快,因?yàn)椴挥孟蛏纤阉髯饔糜蜴湣? 基本類(lèi)型和引用類(lèi)型的值 ECMAscript變量包含 基本類(lèi)型值和引用類(lèi)型值 基本類(lèi)型值值的是基本數(shù)據(jù)類(lèi)型:Undefined, Null, Boolean, Number, String ...
摘要:包括元素的高度上下內(nèi)邊距上下邊框值,如果元素的的值為那么該值為。該值為元素的包含元素。最后,所有這些偏移量都是只讀的,而且每次訪問(wèn)他們都需要重新計(jì)算。為了避免重復(fù)計(jì)算,可以將計(jì)算的值保存起來(lái),以提高性能。 offsetHeight 包括元素的高度、上下內(nèi)邊距、上下邊框值,如果元素的style.display的值為none,那么該值為0。offsetWidth 包括元素的寬度、左...
閱讀 743·2021-11-17 09:33
閱讀 3779·2021-09-01 10:46
閱讀 1764·2019-08-30 11:02
閱讀 3293·2019-08-29 15:05
閱讀 1409·2019-08-26 11:39
閱讀 2285·2019-08-23 17:04
閱讀 1984·2019-08-23 15:43
閱讀 1381·2019-08-23 14:12