摘要:作為一個(gè)有追求的前端,這是不可以接受的。兩大特性在不刷新頁(yè)面的情況下向服務(wù)器端發(fā)送請(qǐng)求從服務(wù)器端接收數(shù)據(jù),并進(jìn)行對(duì)應(yīng)的邏輯處理請(qǐng)求流程首先先建立一個(gè)異步請(qǐng)求對(duì)象第一步的對(duì)象設(shè)置已經(jīng)好了。在閉包中進(jìn)行相關(guān)的操作。
ajax的使用一直是以jQuery為主,對(duì)于底層的實(shí)現(xiàn)有點(diǎn)不明覺(jué)厲。作為一個(gè)有追求的前端,這是不可以接受的。便讓我們今晚好好走進(jìn)ajax的內(nèi)心世界。
ajax 兩大特性:
在不刷新頁(yè)面的情況下向服務(wù)器端發(fā)送請(qǐng)求
從服務(wù)器端接收數(shù)據(jù),并進(jìn)行對(duì)應(yīng)的邏輯處理
ajax 請(qǐng)求流程
step-1
首先先建立一個(gè)異步請(qǐng)求對(duì)象
var httpRequest if(window.XMLHttpRequest) { httpRequest = new XMLHttpRequest(); } else if(window.ActiveXObject) { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); }
step-2
第一步的httpRequest對(duì)象設(shè)置已經(jīng)好了。然后我們要做的就是設(shè)置我們的請(qǐng)求被響應(yīng)時(shí)的動(dòng)作
httpRequest.onreadystatechange = function(){ if(httpRequest.readyState === 4) { // everything is good, the response is received } else { // still not ready } }
readyState 說(shuō)明
0 ("UNSENT",未初始化,即httpRequest對(duì)象已創(chuàng)建,但是open()方法還沒(méi)調(diào)用)
1 ("OPENED",載入中, 即請(qǐng)求已經(jīng)open()過(guò)了,但是send()方法還沒(méi)調(diào)用)
2 ("HEADERS_RECEIVED",已載入, 即send()過(guò)了,但是data數(shù)據(jù)還沒(méi)返回)
3 ("LOADING",動(dòng)態(tài)交互,即data數(shù)據(jù)已經(jīng)接收到了,但是responseText內(nèi)容會(huì)獲取)
4 ("DONE",完成, 即全部data數(shù)據(jù)接收成功)
Response 屬性
status (返回狀態(tài)碼,比如1/2/3/4/500)
statusText(返回狀態(tài)文本,比如OK)
responseType(返回響應(yīng)的狀態(tài), 比如"loading","done")
response (返回響應(yīng)的具體內(nèi)容)
responseText(返回響應(yīng)的具體文本內(nèi)容)
step-3
然后來(lái)寫(xiě)一個(gè)簡(jiǎn)單的demo
Make a request
愛(ài)心小貼士:
如果發(fā)送請(qǐng)求之后返回的數(shù)據(jù)格式為XML時(shí),那么在IE中需要設(shè)置http-header頭, "Content-Type": application/xml 不然IE會(huì)拋出一個(gè)"Object Expected"的錯(cuò)誤
如果你沒(méi)有http-header Cache-Control: no-cache, 那么瀏覽器則會(huì)緩存請(qǐng)求,不會(huì)再發(fā)送新的請(qǐng)求。當(dāng)然你還可以使用時(shí)間戳之類的形式來(lái)使每次請(qǐng)求的url不同,來(lái)繞過(guò)緩存問(wèn)題。
在閉包中進(jìn)行ajax相關(guān)的操作。
返回的數(shù)據(jù)為JSON時(shí),應(yīng)對(duì)數(shù)據(jù)進(jìn)行相應(yīng)的解析
function alertContents() { if(httpRequest.readyState === 4) { if(httpRequest.status === 200) { var response = JSON.parse(httpRequest.responseText); } else { alert("There was s problem with the request."); } } }參考資料
MDN AJAX
MDN AJAX Getting Started
Ajax Mistakes
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/87537.html
摘要:是個(gè)類似于的前端工作流工具,今天就簡(jiǎn)單的介紹一下和一些我的使用感受在中安裝全局切換到你的前端工作目錄下確保你的前端工作目錄下有這個(gè)文件然后就已經(jīng)安裝好了,馬上就可以進(jìn)入簡(jiǎn)單的配置了。但是在使用的工作之中會(huì)遇到一些問(wèn)題。 gulp 是個(gè)類似于grunt的前端工作流工具,今天就簡(jiǎn)單的介紹一下gulp和一些我的使用感受 Installing gulp 在Terminal中安裝全局gulp...
摘要:概覽大法好今夜秋風(fēng)陣陣,霧霾層層。布局選擇多媒體,字體響應(yīng)就是屌。說(shuō)起來(lái)?xiàng)l目繁多,乍看之下與之前比起來(lái)復(fù)雜了好多。圓角指的即使一般正式的寫(xiě)法為效果請(qǐng)看任意一個(gè)按鈕即可寫(xiě)到此處不禁跟大家說(shuō),最好還是配合預(yù)編譯來(lái)寫(xiě)。 CSS3 概覽 showImg(https://segmentfault.com/img/bVddDt); CSS3大法好 今夜秋風(fēng)陣陣,霧霾層層。不禁讓人想作詩(shī),不過(guò)...
摘要:函數(shù)更多的用處在于封裝一些需要加前綴的屬性,或是多個(gè)參數(shù)的屬性,同時(shí)命名一定要足夠的語(yǔ)義化。適當(dāng)嵌套,以保持的優(yōu)雅。有時(shí)要考慮兼容性,需要避免編譯某條屬性,方法即在值的前面加一個(gè)符號(hào)具體如下安裝同時(shí)推薦在線編譯網(wǎng)站,能夠?qū)崟r(shí)看到效果。 LESS 是一門(mén)CSS預(yù)編譯語(yǔ)言,猶記得當(dāng)初打算使用CSS預(yù)編譯語(yǔ)言的時(shí)候,可選的有SASS、LESS、Stylus三門(mén),剛好那個(gè)時(shí)候在學(xué)習(xí)bootst...
摘要:從零開(kāi)始單排學(xué)設(shè)計(jì)模式的國(guó)服排位之旅,今天正式開(kāi)啟目前段位定級(jí)賽這篇文章來(lái)總結(jié)下類圖,本來(lái)不打算講類圖的,因?yàn)槲以趯W(xué)習(xí)設(shè)計(jì)模式的時(shí)候,一遇到有關(guān)的就會(huì)自動(dòng)忽略,一看感覺(jué)就很復(fù)雜。關(guān)聯(lián)關(guān)系用實(shí)現(xiàn)箭頭來(lái)表示。 閱讀本文大概需要 3.5 分鐘。 本篇是設(shè)計(jì)模式系列的開(kāi)篇,雖然之前也寫(xiě)過(guò)相應(yīng)的文章,但是因?yàn)榉N種原因后來(lái)斷掉了,而且發(fā)現(xiàn)之前寫(xiě)的內(nèi)容也很渣,不夠系統(tǒng)。 所以現(xiàn)在打算重寫(xiě),加上距離現(xiàn)...
摘要:因?yàn)槲蚁M@是一個(gè)系列的文章,所以開(kāi)始之前先簡(jiǎn)單說(shuō)一下,我?guī)缀鯖](méi)用過(guò)這個(gè)框架寫(xiě)過(guò)項(xiàng)目,所以文章中難免會(huì)有一些比較外行的說(shuō)法。先整理用法,然后再整理自己的框架。 因?yàn)槲蚁M@是一個(gè)系列的文章,所以開(kāi)始之前先簡(jiǎn)單說(shuō)一下,我?guī)缀鯖](méi)用過(guò)vue這個(gè)框架寫(xiě)過(guò)項(xiàng)目,所以文章中難免會(huì)有一些比較外行的說(shuō)法。當(dāng)然,我用過(guò)一些時(shí)間的angular,也曾經(jīng)解決過(guò)一些同行們vue方面的問(wèn)題。所以如果有人原因看的...
閱讀 2889·2023-04-26 00:26
閱讀 3498·2023-04-25 14:30
閱讀 3388·2021-10-09 09:44
閱讀 3682·2021-09-28 09:35
閱讀 1857·2021-09-22 16:02
閱讀 1254·2021-09-03 10:30
閱讀 3226·2019-08-30 15:53
閱讀 2160·2019-08-30 14:07