我們先來看看非同步物件五部曲
這是post請求的、
結合get請求做一個非同步物件的封裝
get 請求中的
xhr.setRequestHeader("If-Modified-Since", "0"); 是為了清除快取
而post請求的
是為了傳輸方式
在
var ajaxHelp = {
CreateXHR: 函數 () {
//建立物件
var xhr = new XMLHttpRequest();
返回 xhr;
},
//ajax的get請求
AjaxGet: 函數 (url, 回呼) {
this.AJaxCommon("get", url, null, callBack);
},
//ajax的post請求
AjaxPost:函數(url、參數、callBack){
this.AJaxCommon("post", url, params, callBack);
},
AJaxCommon:函數(方法、url、參數、回呼){
//1.0
var xhr = this.CreatXHR();
//2.0
xhr.open(方法, url, true);
//3.0
if (方法==「取得」) {
xhr.setRequestHeader("If-Modified-Since", "0");
} 其他 {
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
}
//4.0
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
var datas = JSON.parse(xhr.responseText);
//執行回呼函數
回調(資料);
}
}
//5.0
xhr.send(params);
}
};
ps:在JQuery裡面有$.ajax 和$.get / $.Post 等非同步請求的方法的。以前的封裝就不用了。額。好扯。其實他們也是這麼寫的呢。 jQuery就是為了解決各個瀏覽器的相容性問題而已
以上是本人對於jQuery非同步物件(XMLHttpRequest)的理解,如有遺漏,麻煩聯絡我,補充上。