摘要:二技術(shù)的核心技術(shù)的核心是對(duì)象簡(jiǎn)稱,使得瀏覽器可以發(fā)出請(qǐng)求與接收響應(yīng)。伴隨狀態(tài)碼的字符串信息。第二部分請(qǐng)求頭部,第二行至第六行。第四部分請(qǐng)求數(shù)據(jù),第八行。例子第一部分狀態(tài)行,由協(xié)議版本號(hào),狀態(tài)碼,狀態(tài)消息三部分組成。
一、什么是Ajax
Ajax的全稱是Asynchronous JavaScript and XML,即異步JavaScript+XML。
二、Ajax技術(shù)的核心Ajax技術(shù)的核心是XMLHttpRequest對(duì)象(簡(jiǎn)稱XHR),使得瀏覽器可以發(fā)出HTTP請(qǐng)求與接收HTTP響應(yīng)。
XMLHttpRequest對(duì)象的主要屬性有:
onreadystatechange——每次狀態(tài)改變所觸發(fā)事件的事件處理程序。
responseText——從服務(wù)器進(jìn)程返回?cái)?shù)據(jù)的字符串形式。
responseXML——從服務(wù)器進(jìn)程返回的DOM兼容的文檔數(shù)據(jù)對(duì)象。
status——從服務(wù)器返回的數(shù)字代碼,如404(未找到)和200(已就緒)。
status Text——伴隨狀態(tài)碼的字符串信息。
readyState——對(duì)象狀態(tài)值。
創(chuàng)建Ajax核心對(duì)象XMLHttpRequest(記得考慮兼容性)
向服務(wù)器發(fā)送請(qǐng)求
注意:POST請(qǐng)求一定要設(shè)置請(qǐng)求頭的格式內(nèi)容
對(duì)于open方法,有幾點(diǎn)需要注意:
URL是相對(duì)于當(dāng)前頁面的路徑,也可以似乎用絕對(duì)路徑。
open方法不會(huì)向服務(wù)器發(fā)送真正請(qǐng)求,它相當(dāng)于初始化請(qǐng)求并準(zhǔn)備發(fā)送。
只能向同一個(gè)域中使用相同協(xié)議和端口的URL發(fā)送請(qǐng)求,否則會(huì)因?yàn)榘踩驁?bào)錯(cuò)。
真正能夠向服務(wù)器發(fā)送請(qǐng)求需要調(diào)用send方法,并僅在POST請(qǐng)求可以傳入?yún)?shù),不需要?jiǎng)t發(fā)送null,在調(diào)用send方法之后請(qǐng)求被發(fā)往服務(wù)器。
請(qǐng)求發(fā)往服務(wù)器,服務(wù)器根據(jù)請(qǐng)求生成響應(yīng)(Response),傳回給XHR對(duì)象,在收到響應(yīng)后相應(yīng)數(shù)據(jù)會(huì)填充到XHR對(duì)象的屬性,有四個(gè)相關(guān)屬性會(huì)被填充:
responseText——從服務(wù)器進(jìn)程返回?cái)?shù)據(jù)的字符串形式。
responseXML——從服務(wù)器進(jìn)程返回的DOM兼容的文檔數(shù)據(jù)對(duì)象。
status——從服務(wù)器返回的數(shù)字代碼,如404(未找到)和200(已就緒)。
status Text——伴隨狀態(tài)碼的字符串信息。
Http狀態(tài)碼:
1xx:指示信息--表示請(qǐng)求已接收,繼續(xù)處理 2xx:成功--表示請(qǐng)求已被成功接收、理解、接受
3xx:重定向--要完成請(qǐng)求必須進(jìn)行更進(jìn)一步的操作 4xx:客戶端錯(cuò)誤--請(qǐng)求有語法錯(cuò)誤或請(qǐng)求無法實(shí)現(xiàn)
5xx:服務(wù)器端錯(cuò)誤--服務(wù)器未能實(shí)現(xiàn)合法的請(qǐng)求
常見狀態(tài)碼:
200 OK //客戶端請(qǐng)求成功 400 Bad Request //客戶端請(qǐng)求有語法錯(cuò)誤,不能被服務(wù)器所理解 401 Unauthorized //請(qǐng)求未經(jīng)授權(quán),這個(gè)狀態(tài)代碼必須和WWW-Authenticate報(bào)頭域一起使用 403 Forbidden //服務(wù)器收到請(qǐng)求,但是拒絕提供服務(wù) 404 Not Found //請(qǐng)求資源不存在,eg:輸入了錯(cuò)誤的URL 500 Internal Server Error //服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤 503 Server Unavailable //服務(wù)器當(dāng)前不能處理客戶端的請(qǐng)求,一段時(shí)間后可能恢復(fù)正常
readyState——對(duì)象狀態(tài)值。對(duì)象狀態(tài)值有以下幾個(gè):
0 - (未初始化)還沒有調(diào)用send()方法
1 - (載入)已調(diào)用send()方法,正在發(fā)送請(qǐng)求
2 - (載入完成)send()方法執(zhí)行完成
3 - (交互)正在解析響應(yīng)內(nèi)容
4 - (完成)響應(yīng)內(nèi)容解析完成,可以在客戶端調(diào)用了
在異步請(qǐng)求時(shí),我們可以檢查XHR對(duì)象的readyState屬性,該屬性表示請(qǐng)求/響應(yīng)過程中的當(dāng)前活動(dòng)階段,每當(dāng)readyState值改變的時(shí)候都會(huì)觸發(fā)一次onreadystatechange事件。
我們可以利用這個(gè)事件檢查每次readyState變化的值,當(dāng)為4的時(shí)候表示所有數(shù)據(jù)準(zhǔn)備就緒。
有一點(diǎn)我們需要注意:必須在open方法之前指定onreadtstatechange事件處理程序。
與 POST 相比,GET 更簡(jiǎn)單也更快,并且在大部分情況下都能用。
然而,在以下情況中,請(qǐng)使用 POST 請(qǐng)求:
無法使用緩存文件(更新服務(wù)器上的文件或數(shù)據(jù)庫)
向服務(wù)器發(fā)送大量數(shù)據(jù)(POST 沒有數(shù)據(jù)量限制)
發(fā)送包含未知字符的用戶輸入時(shí),POST 比 GET 更穩(wěn)定也更可靠
五、HTTP請(qǐng)求
HTTP之請(qǐng)求消息Request
客戶端發(fā)送一個(gè)HTTP請(qǐng)求到服務(wù)器的請(qǐng)求消息包括以下格式:
請(qǐng)求行(request line)、請(qǐng)求頭部(header)、空行和請(qǐng)求數(shù)據(jù)四個(gè)部分組成。
POST請(qǐng)求例子
POST / HTTP1.1 Host: www.wrox.com User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) Content-Type: application/x-www-form-urlencoded Content-Length: 40 Connection: Keep-Alive name=Professional%20Ajax&publisher=Wiley
第一部分:請(qǐng)求行,第一行明了是post請(qǐng)求,以及http1.1版本。
第二部分:請(qǐng)求頭部,第二行至第六行。
第三部分:空行,第七行的空行。第四部分:請(qǐng)求數(shù)據(jù),第八行。
HTTP之響應(yīng)消息Response
一般情況下,服務(wù)器接收并處理客戶端發(fā)過來的請(qǐng)求后會(huì)返回一個(gè)HTTP的響應(yīng)消息。
HTTP響應(yīng)也由四個(gè)部分組成,分別是:狀態(tài)行、消息報(bào)頭、空行和響應(yīng)正文。
例子
HTTP/1.1 200 OK Date: Fri, 22 May 2009 06:07:21 GMT Content-Type: text/html; charset=UTF-8
第一部分:狀態(tài)行,由HTTP協(xié)議版本號(hào), 狀態(tài)碼, 狀態(tài)消息 三部分組成。
第一行為狀態(tài)行,(HTTP/1.1)表明HTTP版本為1.1版本,狀態(tài)碼為200,狀態(tài)消息為(ok)
第二部分:消息報(bào)頭,用來說明客戶端要使用的一些附加信息
第二行和第三行為消息報(bào)頭,Date:生成響應(yīng)的日期和時(shí)間;Content-Type:指定了MIME類型的HTML(text/html),編碼類型是UTF-8
第三部分:空行,消息報(bào)頭后面的空行是必須的
第四部分:響應(yīng)正文,服務(wù)器返回給客戶端的文本信息。
空行后面的html部分為響應(yīng)正文。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/102444.html
摘要:之所以不能跨域其實(shí)是因?yàn)槭艿酵床呗缘南拗疲荒茏屗L問同源下的數(shù)據(jù),不能訪問不同源下的數(shù)據(jù)同源策略每個(gè)網(wǎng)站只能讀取同一來源的數(shù)據(jù),這里的同一來源指的是主機(jī)名域名協(xié)議和端口號(hào)的組合。 一、Ajax的概念 Ajax是一種技術(shù)方案,但并不是一種新技術(shù)。它依賴的是現(xiàn)有的CSS/HTML/Javascript,而其中最核心的依賴是瀏覽器提供的XMLHttpRequest對(duì)象,是這個(gè)對(duì)象使得瀏...
摘要:在接收響應(yīng)期間持續(xù)不斷地觸發(fā)。在請(qǐng)求發(fā)生錯(cuò)誤時(shí)觸發(fā)。在通信完成或者觸發(fā)或事件后觸發(fā)。已經(jīng)接收到部分響應(yīng)數(shù)據(jù)?;跇?biāo)準(zhǔn)被廣泛支持。破壞程序的異常處理機(jī)制。 原文(我的GitHub):https://github.com/liangfengbo/frontend-ability/issues/1 學(xué)習(xí)大綱 理解Ajax的工作原理 Ajax核心-XMLHttpRequest對(duì)象 封裝Aja...
摘要:需要注意的是,并不是的替代品,兩者各自有其適應(yīng)的場(chǎng)景。但為了方便交流,我們通常將獲取資源的一方稱為客戶端主要的工具是瀏覽器,而將派發(fā)資源的一方稱為服務(wù)端又稱為服務(wù)器。它可以幫助我們?yōu)橹蟾拍罴?xì)節(jié)的學(xué)習(xí)打下良好基礎(chǔ)。 再也不學(xué)AJAX了是一個(gè)與AJAX主題相關(guān)的文章系列,包含以下三個(gè)部分的內(nèi)容: AJAX概述:主要回答AJAX是什么這個(gè)問題; 使用AJAX:介紹如何通過JavaSc...
摘要:基于標(biāo)準(zhǔn)被廣泛支持。這樣的類最初是在中作為一個(gè)名為的對(duì)象引入的。請(qǐng)求還沒有被發(fā)送。當(dāng)為,這個(gè)屬性返回目前已經(jīng)接收的響應(yīng)部分。由服務(wù)器返回的狀態(tài)代碼,如表示成功,而表示錯(cuò)誤。方法取消當(dāng)前響應(yīng),關(guān)閉連接并且結(jié)束任何未決的網(wǎng)絡(luò)活動(dòng)。 前言 總括: 本文講解了ajax的歷史,工作原理以及優(yōu)缺點(diǎn),對(duì)XMLHttpRequest對(duì)象進(jìn)行了詳細(xì)的講解,并使用原生js實(shí)現(xiàn)了一個(gè)ajax對(duì)象以方便日常開...
摘要:前端基礎(chǔ)技術(shù)下你要明白是什么,怎么使用,程序是將信息放入公共的服務(wù)器,讓所有網(wǎng)絡(luò)用戶可以通過瀏覽器進(jìn)行訪問。獲取字符串形式的響應(yīng)數(shù)據(jù),獲取形式的響應(yīng)數(shù)據(jù)。基礎(chǔ)回顧原理是借助標(biāo)簽發(fā)送跨域請(qǐng)求的技巧。 Web前端-Ajax基礎(chǔ)技術(shù)(下) 你要明白ajax是什么,怎么使用? ajax,web程序是將信息放入公共的服務(wù)器,讓所有網(wǎng)絡(luò)用戶可以通過瀏覽器進(jìn)行訪問。 瀏覽器發(fā)送請(qǐng)求,獲取服務(wù)器的數(shù)據(jù):...
摘要:是一款緩存插件,可以為方法擴(kuò)展緩存功能。緩存清理插件本身會(huì)自動(dòng)清理過期緩存對(duì)于不想繼續(xù)使用緩存的接口可以為方法傳入清理當(dāng)前接口的緩存并返回最新數(shù)據(jù)也可以調(diào)用清理所有插件產(chǎn)生的緩存。 原文鏈接 AJAX-Cache是什么 Ajax是前端開發(fā)必不可少的數(shù)據(jù)獲取手段,在頻繁的異步請(qǐng)求業(yè)務(wù)中,我們往往需要利用緩存提升界面響應(yīng)速度,減少網(wǎng)絡(luò)資源占用。AJAX-Cache是一款jQuery緩存插件...
閱讀 3342·2021-11-02 14:44
閱讀 3783·2021-09-02 15:41
閱讀 1786·2019-08-29 16:57
閱讀 1852·2019-08-26 13:38
閱讀 3367·2019-08-23 18:13
閱讀 2166·2019-08-23 15:41
閱讀 1730·2019-08-23 14:24
閱讀 3093·2019-08-23 14:03