
文章插圖
一、ajax介紹ajax 是前后端交互的重要手段或橋梁 。它不是一個(gè)技術(shù),是一組技術(shù)的組合 。
ajax :a:異步;j:js;a:和;x:服務(wù)端的數(shù)據(jù) 。
ajax的組成:
異步的 js 事件其他 js (處理解析數(shù)據(jù))XMLHttpRequest 對(duì)象數(shù)據(jù)(txt、json、xml、html)通過后臺(tái)與服務(wù)器進(jìn)行少量數(shù)據(jù)交換,ajax可以使網(wǎng)頁實(shí)現(xiàn)異步更新 。也就是在不需要重新加載整個(gè)網(wǎng)頁的情況下,能夠更新部分網(wǎng)頁的技術(shù) 。傳統(tǒng)的網(wǎng)頁不使用ajax,如果需要更新內(nèi)容,必須重新加載整個(gè)頁面 。
ajax請(qǐng)求原理:創(chuàng)建一個(gè)網(wǎng)絡(luò)請(qǐng)求對(duì)象 -> 發(fā)送連接請(qǐng)求 -> 發(fā)送請(qǐng)求數(shù)據(jù) -> 檢查網(wǎng)絡(luò)請(qǐng)求對(duì)象的狀態(tài) -> 如果響應(yīng)成功了 -> 瀏覽器接收返回?cái)?shù)據(jù)并更新網(wǎng)頁 。接下來詳細(xì)介紹對(duì)象的創(chuàng)建以及它的方法 。
二、創(chuàng)建 XMLHttpRequest 對(duì)象XMLHttpRequest 對(duì)象,用于后臺(tái)與服務(wù)器之間的數(shù)據(jù)交換,意味著可以在不加載整個(gè)網(wǎng)頁的情況下,更新部分內(nèi)容或數(shù)據(jù) 。現(xiàn)代瀏覽器基本都支持,但是低版本的IE不支持,如果我們考慮IE兼容問題創(chuàng)建對(duì)象的時(shí)候需要兼容創(chuàng)建 。
考慮兼容時(shí)創(chuàng)建的對(duì)象:
var xhr ;if( window.XMLHttpRequest ){ //檢查瀏覽器是否支持XMLHttpRequest xhr = new XMLHttpRequest()}else{ xhr = new ActiveXObject("Microsoft.XMLHTTP") //兼容IE6IE5}三、XMLHttpRequest的方法3.1、open( )
設(shè)置請(qǐng)求的類型、請(qǐng)求接口、是否異步處理 。
使用語法:open( method , url , async )
method:設(shè)置網(wǎng)絡(luò)請(qǐng)求的類型,常用的 get 和 posturl:設(shè)置請(qǐng)求的接口也就是服務(wù)器的地址async:true時(shí)表示異步,false表示同步3.2、send( )
將請(qǐng)求發(fā)送到服務(wù)器 。
使用語法:send( string )
string,只用在請(qǐng)求方式是post時(shí),發(fā)送給服務(wù)器的數(shù)據(jù) 。數(shù)據(jù)是鍵值對(duì)格式的,如:”name=jack&pwd=1234″使用發(fā)送方式不同的時(shí)候,傳輸數(shù)據(jù)添加方式也不同,所以我們介紹下分別為post和get時(shí),數(shù)據(jù)是如何發(fā)送的?
3.3、提交方式
使用 get 方式提交get發(fā)送請(qǐng)求時(shí),需要傳給后臺(tái)的數(shù)據(jù)通過url來傳遞,多個(gè)參數(shù)之間使用 & 符號(hào)連接,使用時(shí)如下:
xhr.opn( "GET" , "1.php?name=hello&age=world" , true )xhr.send()使用 post 方式提交使用 post 方式發(fā)送請(qǐng)求時(shí),使用send來發(fā)送數(shù)據(jù),有時(shí)需要設(shè)置數(shù)據(jù)格式,類似表單那樣,此時(shí)可通過 setRequestHeader 設(shè)置發(fā)送的數(shù)據(jù)格式
xhr.setRequestHeader( "Content-type", "application/x-www-form-urlencoded")Content-type常見類型:
text/plain 純文本,基本不怎么用application/x-www-form-urlcoded 鍵值對(duì)格式傳值,多個(gè)參數(shù)使用&連接multipart/form-data 定界符,分隔各個(gè)數(shù)據(jù),經(jīng)常用于上傳文件四、readyState 屬性readyState 存有 XMLHttpRequest 的狀態(tài),它的值從 0-4 發(fā)生變化,分別代表的意義:
0:請(qǐng)求初始化,對(duì)象剛剛創(chuàng)建1:服務(wù)器已連接2:已發(fā)送,send發(fā)放已調(diào)用3:已接收,此時(shí)只接收了響應(yīng)(response)頭部分4:已接收,此時(shí)接收響應(yīng)(response)體信息每當(dāng) readyState 狀態(tài)值發(fā)生改變時(shí)會(huì),就會(huì)觸發(fā) onreadystatechange 事件,對(duì)應(yīng)著每個(gè)狀態(tài)值就會(huì)被觸發(fā)五次 。當(dāng)狀態(tài)值為 4 時(shí)表示網(wǎng)絡(luò)請(qǐng)求響應(yīng)完畢,就可以獲取返回的值 。
xhr.onreadystateChange = function(){ if( xhr.readyState==4 ){if( xhr.status>=200 && xhr.status<300 || xhr.status==304 ){console.log("請(qǐng)求成功",xhr.responseXML)}else{console.log("請(qǐng)求失敗")} }}五、響應(yīng)信息通常我們需要獲取服務(wù)器返回的信息,然后對(duì)我們的網(wǎng)頁做相對(duì)應(yīng)的結(jié)果展示,通常使用 XMLHttpRequest 的 responseText 或 responseXML 屬性 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助:- 親身經(jīng)歷談一談三星手機(jī)在中國失敗原因 三星手機(jī)為何敗走中國
- nginx轉(zhuǎn)發(fā)請(qǐng)求403的原因 nginx403錯(cuò)誤怎么解決
- jq請(qǐng)求ajax的方法 ajax發(fā)送數(shù)據(jù)格式
- 單點(diǎn)登錄失敗解決措施 單點(diǎn)登錄框架有哪些
- 郭剛堂認(rèn)親后首發(fā)聲!連說5個(gè)感謝,還有一個(gè)請(qǐng)求 江辰唐楚楚小說全文免費(fèi)閱讀
- ajax傳輸json數(shù)據(jù)格式 ajax發(fā)送json數(shù)據(jù)實(shí)例
- 失敗的層次 寧北蘇清荷小說全文免費(fèi)閱讀
- 蘇炳添賽季首敗 蘇炳添為什么敗了?蘇炳添失敗原因是什么?
- 人臉識(shí)別一直失敗原因 王者人臉識(shí)別解決方案
- 夢(mèng)見失敗_周公解夢(mèng)夢(mèng)到失敗是什么意思_做夢(mèng)夢(mèng)見失敗好不好
