Ba la la la ~ 讀者朋友們,大家好,冷鋒時(shí)間,話不多說,發(fā)車!
一、什么是ajax?
異步的Javascript和xml ajax并不是一門新的技術(shù) 而是由html css js xml等技術(shù)的組合
二、ajax的核心對象
XMLHttpRequest
三、ajax的原理
客戶端調(diào)用ajax引擎,由ajax引擎請求服務(wù)器,服務(wù)器將處理完的數(shù)據(jù)返回給ajax引擎,由ajax引擎決定著將返回的結(jié)果寫入頁面的什么位置,從而實(shí)現(xiàn)了頁面的無刷新更新數(shù)據(jù)(局部刷新)
四、異步與同步
同步 在同一時(shí)間內(nèi)只干一件事情 false
異步 在同一時(shí)間內(nèi)能干多件事情 true
五、ajax的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
1、可以無刷新的更新數(shù)據(jù) 提高用戶體驗(yàn)
2、減輕服務(wù)器的壓力
3、 調(diào)用其他接口的一個(gè)方便的先河 只需一個(gè) url 幾個(gè)參數(shù)就可
4、 實(shí)現(xiàn)了及時(shí)通訊系統(tǒng)缺點(diǎn):
1、不利于搜索引擎的優(yōu)化(seo)
2、緩存比較嚴(yán)重
六、傳統(tǒng)的 ajax
代碼及注釋:
// 1. 創(chuàng)建XMLHttpRequest
var obj=new XMLHttpRequest()
// 2. 通過 open 方法來連接服務(wù)器
// open (method,url,async)
// method : 是請求方法 post 或 get (默認(rèn))
// url : 路徑
// async : 設(shè)置同步或者異步 異步 true 同步 false (默認(rèn)為 異步 true)
obj.open("get","http://127.0.0.1:3000/",true)
// 3. 通過 send 方法來發(fā)送數(shù)據(jù)
// 如果請求方法為 get ,需要發(fā)送一個(gè)空
obj.send(null)
// 4. 需要知道的事件 onreadystatechange 當(dāng)屬性 readyState 的值發(fā)生改變的時(shí)候會觸發(fā)該事件
// 5. 屬性 readyState 請求狀態(tài)值
// 0 XMLHttpRequest 還沒有完成初始化
// 1 已經(jīng)開始發(fā)送數(shù)據(jù) 已經(jīng)調(diào)用完 open 還沒有調(diào)用 send
// 2 數(shù)據(jù)已經(jīng)發(fā)送完成, 已經(jīng)調(diào)用完 send
// 3 已經(jīng)接收到服務(wù)器的部分?jǐn)?shù)據(jù),但是還沒有全部接收完
// 4 已經(jīng)接收到全部的數(shù)據(jù), 響應(yīng)結(jié)束
// 6. 屬性 status http狀態(tài)碼 200 表示成功
obj.onreadystatechange=function () {
// 請求成功時(shí)
if(obj.readyState==4&&obj.status==200){
// 彈出
alert(obj.responseText)
}
}
// 7. 屬性 responseText 為響應(yīng)值
七、JQuery簡化后的ajax
代碼及注釋:
$.ajax({
url:"", // 請求路徑
data:{"鍵":值}, // 向服務(wù)器發(fā)送的數(shù)據(jù)
type:"post/get", // 默認(rèn)的為 get
datatype:"", // 數(shù)據(jù)類型
async:true/false, // 設(shè)置請求是同步 或者 異步
success:function(e){
// 請求成功后執(zhí)行的回調(diào)函數(shù)
}
})
八、個(gè)人對ajax的理解
????????ajax在項(xiàng)目當(dāng)中是當(dāng)作異步傳輸模式來做的,異步傳輸時(shí)相當(dāng)于同步來說的,當(dāng)我們按下F5刷新頁面時(shí),那么整個(gè)頁面在瀏覽器中都會被更新數(shù)據(jù),而當(dāng)我們須要部分?jǐn)?shù)據(jù)更新時(shí),這時(shí)候我們調(diào)用ajax,ajax會刷新這一部分?jǐn)?shù)據(jù)而不刷新整張頁面,這就是異步傳輸。 而對于我們實(shí)現(xiàn)ajax來說,一般分為這么幾種情況,第一種情況是原生的ajax 第二種是被jQuery簡化過后的ajax其中原生的ajax是這樣的,首先應(yīng)該創(chuàng)建ajax對象,這時(shí)候應(yīng)該考慮兼容性,然后調(diào)用open()方法打開ajax的鏈接,里面寫的屬于有g(shù)et/post,url,true/false(是否同步異步),建立連接后,開始執(zhí)行send()的方法請求數(shù)據(jù),在這個(gè)過程中,需要調(diào)用一個(gè)監(jiān)聽事件onreadystateChange,在監(jiān)聽過程中有5個(gè)狀態(tài)值,當(dāng)狀態(tài)值為4表示執(zhí)行完畢 當(dāng)狀態(tài)碼為200時(shí),執(zhí)行成功,然后把請求的數(shù)據(jù)responseText,然后再進(jìn)行遍歷,執(zhí)行頁面操作。 jQuer簡化后的ajax,$.ajax調(diào)用的時(shí)候里面有幾個(gè)重要的參數(shù)type、url、dataType、success、error這些就是原生中對應(yīng)參數(shù)的值
以上為個(gè)人意見,如有雷同,純屬巧合,歡迎大家多提意見!Bey 了 個(gè) Bey ~