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 跨域解決方案