話說,昨天四級(jí),額,紅燈籠?我是這樣翻譯的: red light ball 。嗯,很合理,寥寥3個(gè)單詞完美詮釋了紅燈籠的各個(gè)特性,顏色,物理特性,形狀??胺Q完美!我都服我自己了.....(鬼畜中)
不說了不說了。來講講ajax。額,雖然ajax已經(jīng)存在了很久并且自己也一直再用,但是當(dāng)中的一些細(xì)節(jié)自己還是沒怎么去了解。
今天打算好好梳理一下,順便講講如何寫更好的ajax。
What is AJax
首先AJax并不是什么新技術(shù),它只是XMLHttpRequest對(duì)象和JS,XML,CSS,DOM等許多技術(shù)的組合。Ajax干的最有意義的事就是跟服務(wù)器交互進(jìn)行業(yè)務(wù)處理的時(shí)候不需要重新刷新頁面。
Ajax的常用屬性和方法
與其說是Ajax的常用屬性和方法,倒不如說是XMLHttpRequest對(duì)象的常用方法和屬性,其中有挺多都是平時(shí)使用的時(shí)候容易被忽略的。比如request.open("MethodType",...)這種經(jīng)常使用的方法這里就不說明了。
Method:
setRequestHeader("","")
雖然設(shè)置請(qǐng)求頭方法也比較常見,但是我最近才發(fā)現(xiàn)這個(gè)方法必須在open()方法之后才能調(diào)用生效。
abort()
該方法用于停止和放棄當(dāng)前的異步請(qǐng)求。
getAllResponeHeaders()
獲取以字符串形式返回的完整的HTTP頭信息。
Property
?readyState
status
Js中的異步
為了更好的理解JS異步編程和Ajax的實(shí)現(xiàn)原理,強(qiáng)烈建議回顧一下下面這篇東西。
https://mp.weixin.qq.com/s?__biz=MzU5NzAyMDg3NQ==&mid=2247486602&idx=1&sn=a0bccb384630941788f03c94c2745e26&chksm=fe58952ec92f1c38bc7216244c8a0a818cf8eacb29df7a38deb4ef2d2c1f756e255b20facc96&token=261055798&lang=zh_CN#rd
什么是“比較好”的Ajax
在著手寫構(gòu)造一個(gè)Ajax的時(shí)候,你應(yīng)該有意的遵循下列幾點(diǎn):
1.非過度嵌套。
2.較好的可讀性。
3.控制性好等。
一般封裝
或者
更加完善的
在ajax請(qǐng)求的各個(gè)過程中可能都會(huì)產(chǎn)生錯(cuò)誤,如果你希望你的代碼更加嚴(yán)謹(jǐn),能應(yīng)付更加復(fù)雜的網(wǎng)絡(luò)環(huán)境,你也可以監(jiān)聽它的各個(gè)過程的事件。
值得一提的是,如果你希望想你的用戶展示,你現(xiàn)在的請(qǐng)求狀態(tài)(直觀的進(jìn)度),特別是一些比較復(fù)雜和比較耗時(shí)的業(yè)務(wù)處理的時(shí)候,為了避免用戶以為程序久久沒有“響應(yīng)”(感覺上)而退出。你可以在progress方法中監(jiān)聽請(qǐng)求的進(jìn)度(如下圖)。
最后
?隨著js的應(yīng)用越來越廣泛,js大法好,你會(huì)遇到越來越來的異步,希望這篇東西對(duì)你有一點(diǎn)點(diǎn)幫助,并來個(gè)贊??。哈哈哈。
今天是父親節(jié),祝天下的父親,父親節(jié)快樂~
夏天快樂~