摘要:最近在學(xué),剛剛?cè)腴T,用到很多與相關(guān)的交互。也用了挺久的了,想寫一下學(xué)習(xí)筆記來記錄一下。實現(xiàn)過程是的基礎(chǔ),是核心對象,首先要實例化一個對象進行請求,規(guī)定請求的類型以及是否異步處理請求。響應(yīng)服務(wù)器狀態(tài)響應(yīng)服務(wù)器狀態(tài)涉及對象的三個重要的屬性。
最近在學(xué)php,剛剛?cè)腴T,用到很多與Ajax相關(guān)的交互。Ajax也用了挺久的了,想寫一下學(xué)習(xí)筆記來記錄一下。今天先簡單寫一下原理和過程。歡迎大家一起探討。什么是AJAX
AJAX的全稱是Asynchronous JavaScript and XML。
它是一種基于JavaScript的網(wǎng)頁應(yīng)用技術(shù)。傳統(tǒng)的提交方式會重載整個網(wǎng)頁,而利用AJAX技術(shù)可以使JavaScript與Web服務(wù)器異步傳輸數(shù)據(jù),從而實現(xiàn)不重載整個頁面的情況下,更新局部頁面局部內(nèi)容。
var xhr = new XMLHTTPRequest();1. AJAX進行請求,規(guī)定請求的類型、URL 以及是否異步處理請求。
xhr.open(method, url, async);
open()方法接收三個參數(shù):
method:請求的類型;GET 或 POST
url:文件在服務(wù)器上的位置
async:true(異步)或 false(同步)
AJAX的原理就是Asynchronous異步的,所以第三個參數(shù)async為true。
第一個參數(shù)method決定了請求類型,即傳輸數(shù)據(jù)的方式。
GET
與POST相比,GET 更簡單也更快。但是傳輸數(shù)據(jù)時會將數(shù)據(jù)放在地址欄的后面,對客戶端而言不安全。除此之外,GET傳輸數(shù)據(jù)的大小受限,一般只有2k-8k,因瀏覽器而異。所以在傳輸不敏感信息并且傳輸文件小的情況下,我們可以選擇用GET方式傳輸。
POST
POST傳輸是傳輸數(shù)據(jù)體,是隱式的,相對客戶端較為安全。但是從另一層面上來說,相對服務(wù)器端就有一定的風(fēng)險了。POST傳輸數(shù)據(jù)沒有大小限制,但是服務(wù)器對上傳的數(shù)據(jù)有限制,需要手動修改。
2. AJAX向服務(wù)器發(fā)送請求xhr.send(string); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
用GET方法傳輸時,send(null),用POST方法傳輸時,需要用setRequestHeader方法設(shè)置請求頭。
3. AJAX響應(yīng)服務(wù)器狀態(tài)AJAX響應(yīng)服務(wù)器狀態(tài)涉及XMLHttpRequest對象的三個重要的屬性:onreadystatechange、readyState、status。
readyState存有XMLHttpRequest的狀態(tài)。從0到4發(fā)生變化:
0: 請求未初始化
1: 服務(wù)器連接已建立
2: 請求已接收
3: 請求處理中
4: 請求已完成,且響應(yīng)已就緒
每當(dāng)readyState改變時,就會觸發(fā)onreadystatechange事件,在事件中判斷請求是否成功,響應(yīng)是否就緒,當(dāng)readyState等于4且狀態(tài)為200時,表示響應(yīng)已就緒:
xhr.onreadystatechange = function () { if (xhr.readyState === 4) { if (xhr.status === 200) { obj.success(xhr.responseText); } } }4. 使用 Callback 函數(shù)
obj.success(xhr.responseText);
AJAX響應(yīng)就緒后,對接收到的數(shù)據(jù)進行后續(xù)的操作。
Ajax原生封裝var ajax = { create: function () { var xhr; if (XMLHttpRequest) { xhr = new XMLHttpRequest(); } else{ xhr = new ActiveXObject("Microsoft.XMLHTTP"); } return xhr; }, request: function (obj) { var xhr = this.create(); var data = this.changeData(obj.data); if (obj.type === "GET") { xhr.open(obj.type, obj.url+"?rand="+Math.random()+"&"+data, true); xhr.send(null); } else if (obj.type === "POST") { xhr.open(obj.type, obj.url, true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") xhr.send(data); } xhr.onreadystatechange = function () { if (xhr.readyState === 4) { if (xhr.status === 200) { obj.success(xhr.responseText); } } } }, changeData: function (data) { var arr = []; for (var i in data) { arr.push(i+"="+data[i]); } return arr.join("&"); } } // 調(diào)用 ajax.request({ type: "POST", url: "weibo.php", data: "act=update", success: function(res){ console.log(res); } });
可以看出調(diào)用的形式與jQuery的實現(xiàn)原理相似。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/53430.html
摘要:最近在學(xué),剛剛?cè)腴T,用到很多與相關(guān)的交互。也用了挺久的了,想寫一下學(xué)習(xí)筆記來記錄一下。實現(xiàn)過程是的基礎(chǔ),是核心對象,首先要實例化一個對象進行請求,規(guī)定請求的類型以及是否異步處理請求。響應(yīng)服務(wù)器狀態(tài)響應(yīng)服務(wù)器狀態(tài)涉及對象的三個重要的屬性。 最近在學(xué)php,剛剛?cè)腴T,用到很多與Ajax相關(guān)的交互。Ajax也用了挺久的了,想寫一下學(xué)習(xí)筆記來記錄一下。今天先簡單寫一下原理和過程。歡迎大家一起探...
摘要:抱歉,最近忙,本篇等有時間更新。引言本文基于框架做的一個生成和存儲,主要目的是學(xué)習(xí)使用框架。書籍基于的,學(xué)習(xí)時使用框架開發(fā)。開發(fā)環(huán)境備注一直想把這本書的個作為系列分享出來,供初學(xué)者學(xué)習(xí)玩玩。 抱歉,最近忙,本篇等有時間更新。 引言 本文基于Laravel框架做的一個URL生成和存儲demo,主要目的是學(xué)習(xí)使用Laravel框架。內(nèi)容基于英文書籍《Packt.Laravel.Applic...
摘要:點擊此處了解網(wǎng)易微專業(yè)課程前段時間報名參加了網(wǎng)易云課堂微專業(yè)課程前端開發(fā)工程師,這周課程開始了,正式學(xué)習(xí)。以下內(nèi)容為前端開發(fā)工程師微專業(yè)的第一門課網(wǎng)頁制作的課程學(xué)習(xí)指南,學(xué)習(xí)視頻課程后自己整理的學(xué)習(xí)筆記,會持續(xù)更新內(nèi)容。 何為網(wǎng)易微專業(yè)? 微專業(yè)是由網(wǎng)易云課堂聯(lián)合各領(lǐng)域知名專家,以就業(yè)為導(dǎo)向,精心打造的職業(yè)培訓(xùn)方案。按要求完成學(xué)習(xí),考試通過可獲得專業(yè)認(rèn)定證書,令你求職或加薪多一份獨特優(yōu)...
摘要:點擊此處了解網(wǎng)易微專業(yè)課程前段時間報名參加了網(wǎng)易云課堂微專業(yè)課程前端開發(fā)工程師,這周課程開始了,正式學(xué)習(xí)。以下內(nèi)容為前端開發(fā)工程師微專業(yè)的第一門課網(wǎng)頁制作的課程學(xué)習(xí)指南,學(xué)習(xí)視頻課程后自己整理的學(xué)習(xí)筆記,會持續(xù)更新內(nèi)容。 何為網(wǎng)易微專業(yè)? 微專業(yè)是由網(wǎng)易云課堂聯(lián)合各領(lǐng)域知名專家,以就業(yè)為導(dǎo)向,精心打造的職業(yè)培訓(xùn)方案。按要求完成學(xué)習(xí),考試通過可獲得專業(yè)認(rèn)定證書,令你求職或加薪多一份獨特優(yōu)...
摘要:對象是的基礎(chǔ)使用它的和方法將請求發(fā)送到服務(wù)器或,請求的類型文件在服務(wù)器上的位置為異步,為同步將數(shù)據(jù)發(fā)送給服務(wù)器,僅用于方法當(dāng)設(shè)為時,即為異步時,規(guī)定響應(yīng)處于事件中的就緒函數(shù)的三個重要屬性每次發(fā)生改變時就會調(diào)用這個函數(shù)存儲著的狀態(tài),從到發(fā)生變 XMLHttpRequest對象是ajax的基礎(chǔ) 使用它的open()和send()方法將請求發(fā)送到服務(wù)器 var a=3; var requ...
閱讀 2958·2021-11-24 09:39
閱讀 2869·2021-09-29 09:34
閱讀 3560·2021-09-24 10:23
閱讀 1746·2021-09-22 15:41
閱讀 1701·2019-08-30 15:55
閱讀 3516·2019-08-30 13:58
閱讀 2624·2019-08-30 13:11
閱讀 1669·2019-08-29 12:31