摘要:原理客戶端通過對象向服務(wù)器發(fā)送異步請求,從服務(wù)器獲取數(shù)據(jù),通過操作的對象來更新頁面。是,則返回狀態(tài)碼,客戶端從緩存中讀取數(shù)據(jù)。
原理
客戶端通過xmlHttpRequest對象向服務(wù)器發(fā)送異步請求,從服務(wù)器獲取數(shù)據(jù),通過操作javascript的DOM對象來更新頁面。
實(shí)現(xiàn) 原生實(shí)現(xiàn)function createXmlHttpRequest(){ var xhr; if(window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari xhr = new window.XMLHttpRequest(); }else if(window.ActiveXObject){ // code for IE6, IE5 try{ xhr = new window.ActiveXObject("Microsoft.XMLHTTP"); }catch(ex){ xhr = new window.ActiveXObject("msxm12.XMLHTTP"); } } return xhr; } function doGet(url, successcallback, errorcallback){ var xhr = createXmlHttpRequest(); xhr. open("GET", URL, true); xhr.onreadystatechange = function (){ if(xhr.readystate==4){ if(xhr.status==200){ successcallback(); }else{ errorcallback(); } } } xhr.send(); } function doPost(url, successcallback, errorcallback){ var xhr = createXmlHttpRequest(); xhr. open("GET", URL, true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function (){ if(xhr.readystate==4){ if(xhr.status==200){ successcallback(); }else{ errorcallback(); } } } xhr.send(); }Jquery封裝實(shí)現(xiàn)
var ajaxa = function(){ //默認(rèn)參數(shù) var _options = { type: "GET", url: null, data: null, dataType: "jsopn", success: null, fail: null, async: true, contentType: "application/x-www-form-urlencoded" }; return function(options){ if(!options || !options.url){ throw("參數(shù)異常"); } var xhr = new (window.XMLHttpRequest||window.ActionXObject)("Mircosoft.xml); xhr.open(options.type, options.url, options.async); xhr.onreadystate.change = function(){ if(xhr.raadySate = 4){ if(xhr.status == 200 && xhr.status < 300 || xhr.status == 304){ var text = xhr.responseText; if(options.dataType == "json"){ text = JSON.parse(text); } if(typeof options.success === "function"){ options.success(text, xhr.status); } }else{ if(typeof options.fail === "function"){ options.fail("failed", 500); } } } } xhr.setRequestHeader("content-type",options.contentType); xhr.send(options.data); } }readystate五種狀態(tài)
0 - (未初始化)還沒有調(diào)用send()方法
1 - (載入)已調(diào)用send()方法,正在發(fā)送請求
2 - (載入完成)send()方法執(zhí)行完成,已經(jīng)接收到全部響應(yīng)內(nèi)容
3 - (交互)正在解析響應(yīng)內(nèi)容
4 - (完成)響應(yīng)內(nèi)容解析完成,可以在客戶端調(diào)用了
MIME是描述消息內(nèi)容類型的因特網(wǎng)標(biāo)準(zhǔn),能包含文本、圖像、音頻、視頻以及其他應(yīng)用程序?qū)S玫臄?shù)據(jù)。主要有五種,text、application、images、audio、video
響應(yīng)狀態(tài)碼304原理客戶端發(fā)送條件驗(yàn)證請求,服務(wù)器端讀取If-Modified-Since和If-None-Match請求頭信息,來判斷客戶端緩存的資源是否是最新的。是,則返回304狀態(tài)碼,客戶端從緩存中讀取數(shù)據(jù)。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/83903.html
摘要:之所以不能跨域其實(shí)是因?yàn)槭艿酵床呗缘南拗疲荒茏屗L問同源下的數(shù)據(jù),不能訪問不同源下的數(shù)據(jù)同源策略每個網(wǎng)站只能讀取同一來源的數(shù)據(jù),這里的同一來源指的是主機(jī)名域名協(xié)議和端口號的組合。 一、Ajax的概念 Ajax是一種技術(shù)方案,但并不是一種新技術(shù)。它依賴的是現(xiàn)有的CSS/HTML/Javascript,而其中最核心的依賴是瀏覽器提供的XMLHttpRequest對象,是這個對象使得瀏...
摘要:在接收響應(yīng)期間持續(xù)不斷地觸發(fā)。在請求發(fā)生錯誤時觸發(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對象 封裝Aja...
摘要:需要注意的是,并不是的替代品,兩者各自有其適應(yīng)的場景。但為了方便交流,我們通常將獲取資源的一方稱為客戶端主要的工具是瀏覽器,而將派發(fā)資源的一方稱為服務(wù)端又稱為服務(wù)器。它可以幫助我們?yōu)橹蟾拍罴?xì)節(jié)的學(xué)習(xí)打下良好基礎(chǔ)。 再也不學(xué)AJAX了是一個與AJAX主題相關(guān)的文章系列,包含以下三個部分的內(nèi)容: AJAX概述:主要回答AJAX是什么這個問題; 使用AJAX:介紹如何通過JavaSc...
摘要:基于標(biāo)準(zhǔn)被廣泛支持。這樣的類最初是在中作為一個名為的對象引入的。請求還沒有被發(fā)送。當(dāng)為,這個屬性返回目前已經(jīng)接收的響應(yīng)部分。由服務(wù)器返回的狀態(tài)代碼,如表示成功,而表示錯誤。方法取消當(dāng)前響應(yīng),關(guān)閉連接并且結(jié)束任何未決的網(wǎng)絡(luò)活動。 前言 總括: 本文講解了ajax的歷史,工作原理以及優(yōu)缺點(diǎn),對XMLHttpRequest對象進(jìn)行了詳細(xì)的講解,并使用原生js實(shí)現(xiàn)了一個ajax對象以方便日常開...
摘要:前端基礎(chǔ)技術(shù)下你要明白是什么,怎么使用,程序是將信息放入公共的服務(wù)器,讓所有網(wǎng)絡(luò)用戶可以通過瀏覽器進(jìn)行訪問。獲取字符串形式的響應(yīng)數(shù)據(jù),獲取形式的響應(yīng)數(shù)據(jù)。基礎(chǔ)回顧原理是借助標(biāo)簽發(fā)送跨域請求的技巧。 Web前端-Ajax基礎(chǔ)技術(shù)(下) 你要明白ajax是什么,怎么使用? ajax,web程序是將信息放入公共的服務(wù)器,讓所有網(wǎng)絡(luò)用戶可以通過瀏覽器進(jìn)行訪問。 瀏覽器發(fā)送請求,獲取服務(wù)器的數(shù)據(jù):...
摘要:是一款緩存插件,可以為方法擴(kuò)展緩存功能。緩存清理插件本身會自動清理過期緩存對于不想繼續(xù)使用緩存的接口可以為方法傳入清理當(dāng)前接口的緩存并返回最新數(shù)據(jù)也可以調(diào)用清理所有插件產(chǎn)生的緩存。 原文鏈接 AJAX-Cache是什么 Ajax是前端開發(fā)必不可少的數(shù)據(jù)獲取手段,在頻繁的異步請求業(yè)務(wù)中,我們往往需要利用緩存提升界面響應(yīng)速度,減少網(wǎng)絡(luò)資源占用。AJAX-Cache是一款jQuery緩存插件...
閱讀 2461·2021-11-22 15:35
閱讀 3756·2021-11-04 16:14
閱讀 2685·2021-10-20 13:47
閱讀 2487·2021-10-13 09:49
閱讀 2064·2019-08-30 14:09
閱讀 2359·2019-08-26 13:49
閱讀 879·2019-08-26 10:45
閱讀 2762·2019-08-23 17:54