關於對ajax的兼容性問題以及冒泡和捕捉的兼容性處理

首先衆所周知,AJAX原生代碼需要五步走,這也是技術本身決定的,畢竟AJAX是建立在http協議上的技術。

閒話少說,開始寫代碼。

首先關於ajax的創建

//在Google下的創建  
		new XMLHttpRequest()
//IE兼容性問題
		new ActiveXObject("Microsoft.XMLHTTP")

而關於使用ajax經典的說法是通過五步走來實現
· 首先第一步是創建ajax對象,就是上面所說的那種樣子,可以封裝一個createAjax()函數來使用。
· 第二步就是初始化對象,這裏需要注意一點IE兼容性問題,由於IE在緩存方面的一些設定,所以需要我們注意在通過GET請求獲取ajax對象的時候,注意避免IE緩存問題,有三種方法,但是綜合比較來說,還是在URL添加隨機數字來避免IE緩存比較靠譜,設置請求頭即

		//默認已經將創建ajax的方法封裝了
		let ajax = createAjax();
		//初始化
		ajax.open('get',file+'?'+data+"&"+Math.random());
		//或者通過設置請求頭來解決
		ajax.setRequestHeader('If-Modified-Since',"0");
		//但是注意這個方法與CORS跨域技術不兼容

第三步發送請求,這一步GET請求由於請求數據在URL地址後面傳輸,不需再次傳輸,所以這個請求內容可以爲空
ajax.send(null);
第四步,等待服務器響應,服務器會返回兩個參數,分別是ajax.readyState ajax通信狀態碼和 ajax.status HTTP響應狀態碼。而等待響應的事件則是,ajax.onreadystatechange

返回來的兩個事件狀態碼具體說一下:
首先關於ajax通信狀態碼,有5個值:
0:初始值,代表已經創建ajax對象,但未初始化
1: 已經初始化了,但未發送請求
2:已經發送請求,但沒有受到響應
3:已經收到響應,但沒有接收完畢
4:接受完整響應
而這個HTTP響應狀態碼就是所熟知的restful規範
200 成功
304 使用緩存
404 頁面未找到
403拒絕訪問
504 網關超時
500 服務器內部錯誤等

所以這一步就是要判斷 ajax.readyState ==4 同時 ajax.status ==200 ,這樣才能走第五步

第五步就是得到數據,利用這些數據進行一些DOM操作什麼的,ajax.responseText,這個由於ajax支持的數據類型有XML和JSON 以及文本,所以還需要進行判斷解析後才能使用接收的數據。

以上就是ajax的五步走,但只是說了GET請求,POST請求與GET請求的區別只是在與,傳參,以及,傳參時需要設置POST專屬請求頭
application/x-www-form-urlencoded即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章