當前位置:
首頁 > 知識 > Ajax請求匯總(一)

Ajax請求匯總(一)

剛開始結束Ajax請求的時候,那真的是迷迷糊糊,昏天暗地,通過學習的深入和翻閱各種資料、求助度娘,總結一下Ajax請求,與大家分享一下,希望能給學習Ajax的同學一些幫助,廢話不多手,直接開始~~~

一、Ajax請求的原理

1.原理:在Ajax請求中,html頁面的中操作將通過Ajax引擎與伺服器端進行通訊,然後將返回的結果提交到客戶端頁面的Ajax引擎,再由Ajax引擎來決定將伺服器端返回數據插入到頁面的指定位置。從而實現無需刷新頁面的http請求。 看圖:

2.Ajax請求的優點

a.當然最大的優點就是,無需刷新就可更新頁面
b.可以把原先伺服器端負擔的工作的轉移客戶端,利用客戶端的閑置資源進行處理,減輕伺服器和帶寬的負擔,節約空間和成本
c.Ajax沒有平台限制。Ajax把伺服器由原先的傳送內容轉變為傳輸數據,而數據格式可以為純文本和XML格式,這兩種格式沒有平台限制。
d.可以調用Xml等外部數據,進一步促進頁面的顯示和數據的分離

3.Ajax使用的技術

a.XMLHttpRequest對象
b.XML
c.JavaScript
d.Css
e.DOM

4.Ajax請求時性能的優化

a.盡量使用局部變數,不要使用全局變數
b.優化for循環
c.盡量少使用eval,每次使用eval都會浪費大量時間
d.將DOM節點附加到文檔上
e.盡量減少使用點「.」號操作符的使用

二、不同方式的Ajax請求

1.原生js的ajax請求

a.初始化XMLHttpRequest對象

/* IE6以上的瀏覽器*/

var http_request = new ActiveXObject("Msxml2.XMLHTTP") 或者: var http_request = new ActiveXObject("Microsoft.XMLHTTP")

/* 非IE瀏覽器(firefox,Opera,Mozilla,Safari)*/
var http_request = new XMLHttpRequest

考慮到瀏覽器的兼容性,需要創建一個跨瀏覽器的XMLHttpRequest對象,如下:

var http_request;
if (window.XMLHttpRequest) { //兼容非IE瀏覽器
http_request = new XMLHttpRequest
} else if (window.ActiveXObject) { //兼容IE6以上的瀏覽器
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP")
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP")
} catch (e) {}
}
}

b.XMLHttpRequest對象的常用方法

----創建新請求的方法
open方法用於設置進行非同步請求目標的URL,請求方法以及其他參數信息
open("methods","URL","asyncFlag")
methods:用於請求的指定類型,一般為POST或者GET
URL:用於指定的請求地址,可以用絕對地址和相對地址,並且可以傳遞查詢字元串
asyncFlag:可選參數,用於指定請求方式,非同步請求為true,同步請求為false,默認為true

----向伺服器發送請求的方法
send方法用於向伺服器發送請求。如果請求聲明為非同步,該方法立即返回,否則將會等到接收到響應為止
send(content)
content:用於指定發送的數據,可以是DOM對象的實例,字元串等,如果沒用參數,需要傳遞設置為null
舉個例子:
需要向伺服器發送一個沒有參數的請求,如下:
http_request.send(null)

----設置請求的HTTP頭的方法
setRequestHeader("header","value")
header:用於指定的HTTP頭
value:用於指定的HTTP頭的設置值
注意:setRequestHeader方法調用需要在open方法之後
例如:
http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded")

----停止、放棄當前非同步請求的方法
abort
例子:停止當前的非同步請求http_request.abort

c.XMLHttpRequest對象的常用屬性

1.onreadystatechange:用於指定狀態改變時所觸發的事件處理器屬性,在Ajax中,每個狀態改變時都會觸發
這個事件處理器,通常會調用一個Javascript函數
http_request.onreadystatechange = function{}

2.readystate:請求狀態的屬性
readystate屬性的屬性值的意義:
0:未初始化 1:正在載入 2:已載入 3:交互中 4:完成
在實際應用中,該屬性的經常用於判斷請求狀態,當請求狀態為4時,在判斷請求是否成功,如果成功,就開始處理返回結果

3.responseText:獲取伺服器的字元串響應的屬性
接收響應:var text = http_request.responseText

4.responseXML:獲取伺服器的XML響應的屬性
接收響應:var xmldoc = http_request.responseXML

5.status:返回伺服器的HTTP狀態碼的屬性
格式:http_request.status
狀態碼:
100:繼續發送請求 200:請求成功
202:請求被接受,但尚未成功 400:錯誤的請求
404:文件未找到 408:請求超時
500:內部伺服器錯誤 501:伺服器不支持當前請求所需要的某個功能

注意:status屬性只能在send方法返回成功時,才能調用
當請求完成之後:

if (http_request.readystate === 4) {
if (http_request.status === 200) {
alert("請求成功")
} else {
alert("請求失敗")
}
}

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科技優家 的精彩文章:

Ionic進行PC端Web開發時通過腳本壓縮提高第一次載入效率
容器擴展屬性 IExtenderProvider 實現WinForm通用數據驗證組件
Android學習筆記View的工作原理
TCP:三次握手、四次握手、backlog及其他

TAG:科技優家 |

您可能感興趣

ajax傳遞list集合
ajax傳遞參數給springmvc總結「轉」
原生js封裝a和jQurey版ajax介紹
Ajax 爆冷淘汰 Juventus-Cristiano Ronaldo 9 年來首次無緣歐冠半決賽
ajax,long poll,websocket連接的區別原理
通過配置nginx支持客戶端ajax跨域請求
jq ajax自定義請求頭
AJAX-創建 XMLHttpRequest 對象
利用Ajax提升網頁渲染速度——以Highcharts為例
單點登錄Session超時,Ajax請求不能正常跳轉到登錄界面
ASP - AJAX 與 ASP
Ajax跨域問題詳解
鄒哥教你學習Ajax
ajax跨域問題(三種解決方案)
使用Ajax發送非同步請求
AJAX XML 實例
ajax前後端分離,頁面之間傳值
AJAX 實例
AJAX-伺服器 響應
瀏覽器同源策略及 Ajax 跨域解決方案