亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

簡述ajax的工作原理 ajax的原理和功能。


AJAX全稱(AsyncJavascriptandXML)即異步的JavaScript和XML,是一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù),可以在不重新加載整個網(wǎng)頁的情況下,與服務(wù)器交換數(shù)據(jù),并且更新部分網(wǎng)頁

簡述ajax的工作原理 ajax的原理和功能。

文章插圖
Ajax的原理簡單來說通過XmlHttpRequest對象來向服務(wù)器發(fā)異步請求,從服務(wù)器獲得數(shù)據(jù),然后用JavaScript來操作DOM而更新頁面
流程圖如下:
簡述ajax的工作原理 ajax的原理和功能。

文章插圖
下面舉個例子:
領(lǐng)導(dǎo)想找小李匯報一下工作,就委托秘書去叫小李,自己就接著做其他事情,直到秘書告訴他小李已經(jīng)到了,最后小李跟領(lǐng)導(dǎo)匯報工作
Ajax請求數(shù)據(jù)流程與“領(lǐng)導(dǎo)想找小李匯報一下工作”類似,上述秘書就相當于XMLHttpRequest對象,領(lǐng)導(dǎo)相當于瀏覽器,響應(yīng)數(shù)據(jù)相當于小李
瀏覽器可以發(fā)送HTTP請求后,接著做其他事情,等收到XHR返回來的數(shù)據(jù)再進行操作
實現(xiàn)過程實現(xiàn)Ajax異步交互需要服務(wù)器邏輯進行配合,需要完成以下步驟:
創(chuàng)建Ajax的核心對象XMLHttpRequest對象
通過XMLHttpRequest對象的open()方法與服務(wù)端建立連接
構(gòu)建請求所需的數(shù)據(jù)內(nèi)容,并通過XMLHttpRequest對象的send()方法發(fā)送給服務(wù)器端
通過XMLHttpRequest對象提供的onreadystatechange事件監(jiān)聽服務(wù)器端你的通信狀態(tài)
接受并處理服務(wù)端向客戶端響應(yīng)的數(shù)據(jù)結(jié)果
將處理結(jié)果更新到HTML頁面中
創(chuàng)建XMLHttpRequest對象
通過XMLHttpRequest()構(gòu)造函數(shù)用于初始化一個XMLHttpRequest實例對象
const xhr = new XMLHttpRequest();1復(fù)制代碼類型:[javascript]與服務(wù)器建立連接
通過XMLHttpRequest對象的open()方法與服務(wù)器建立連接
xhr.open(method, url, [async][, user][, password])1復(fù)制代碼類型:[javascript]參數(shù)說明:
method:表示當前的請求方式,常見的有GET、POST
url:服務(wù)端地址
async:布爾值,表示是否異步執(zhí)行操作,默認為true
user:可選的用戶名用于認證用途;默認為`null
password:可選的密碼用于認證用途,默認為`null
給服務(wù)端發(fā)送數(shù)據(jù)
通過XMLHttpRequest對象的send()方法,將客戶端頁面的數(shù)據(jù)發(fā)送給服務(wù)端
xhr.send([body])1復(fù)制代碼類型:[javascript]body:在XHR請求中要發(fā)送的數(shù)據(jù)體,如果不傳遞數(shù)據(jù)則為null
如果使用GET請求發(fā)送數(shù)據(jù)的時候,需要注意如下:
將請求數(shù)據(jù)添加到open()方法中的url地址中
發(fā)送請求數(shù)據(jù)中的send()方法中參數(shù)設(shè)置為null
綁定onreadystatechange事件
onreadystatechange事件用于監(jiān)聽服務(wù)器端的通信狀態(tài),主要監(jiān)聽的屬性為XMLHttpRequest.readyState,
關(guān)于XMLHttpRequest.readyState屬性有五個狀態(tài),如下圖顯示
簡述ajax的工作原理 ajax的原理和功能。

文章插圖
只要readyState屬性值一變化,就會觸發(fā)一次readystatechange事件
XMLHttpRequest.responseText屬性用于接收服務(wù)器端的響應(yīng)結(jié)果
舉個例子:
const request = new XMLHttpRequest()request.onreadystatechange = function(e){if(request.readyState === 4){ // 整個請求過程完畢if(request.status >= 200 && request.status <= 300){console.log(request.responseText) // 服務(wù)端返回的結(jié)果}else if(request.status >=400){console.log("錯誤信息:" + request.status)}}}request.open('POST','http://xxxx')request.send()123456789101112復(fù)制代碼類型:[javascript]封裝通過上面對XMLHttpRequest對象的了解,下面來封裝一個簡單的ajax請求
//封裝一個ajax請求function ajax(options) {//創(chuàng)建XMLHttpRequest對象const xhr = new XMLHttpRequest()//初始化參數(shù)的內(nèi)容options = options || {}options.type = (options.type || 'GET').toUpperCase()options.dataType = options.dataType || 'json'const params = options.data//發(fā)送請求if (options.type === 'GET') {xhr.open('GET', options.url + '?' + params, true)xhr.send(null)} else if (options.type === 'POST') {xhr.open('POST', options.url, true)xhr.send(params)//接收請求xhr.onreadystatechange = function () {if (xhr.readyState === 4) {let status = xhr.statusif (status >= 200 && status < 300) {options.success && options.success(xhr.responseText, xhr.responseXML)} else {options.fail && options.fail(status)}}}}1234567891011121314151617181920212223242526272829303132復(fù)制代碼類型:[javascript]


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: