function ajax(options) {
options = options || {}; //調(diào)用函數(shù)時如果options沒有指定亿卤,就給它賦值{},一個空的Object
options.type = (options.type || "GET").toUpperCase();/// 請求格式GET勘畔、POST澎胡,默認(rèn)為GET
options.dataType = options.dataType || "json"; //響應(yīng)數(shù)據(jù)格式,默認(rèn)json
options.headers = options.headers || [];
var params = formatParams(options.data);//options.data請求的數(shù)據(jù)
var xhr;
//考慮兼容性
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else if (window.ActiveObject) {//兼容IE6以下版本
xhr = new ActiveXobject('Microsoft.XMLHTTP');
}
//啟動并發(fā)送一個請求
if (options.type == "GET") {
xhr.open("GET", options.url + "?" + params, true);
for (let i = 0; i < options.headers.length; i++) {
xhr.setRequestHeader(options.headers[i][0], options.headers[i][1]);
}
xhr.send(null);
} else if (options.type == "POST") {
xhr.open("post", options.url, true);
//設(shè)置表單提交時的內(nèi)容類型
//Content-type數(shù)據(jù)請求的格式
xhr.setRequestHeader("Content-type", options.contentType || "application/json");
for (let i = 0; i < options.headers.length; i++) {
xhr.setRequestHeader(options.headers[i][0], options.headers[i][1]);
}
xhr.send(JSON.stringify(options.data));
}
// 設(shè)置有效時間
setTimeout(function () {
if (xhr.readySate != 4) {
xhr.abort();
}
}, options.timeout || 10000);
// 接收
// options.success成功之后的回調(diào)函數(shù) options.error失敗后的回調(diào)函數(shù)
//xhr.responseText,xhr.responseXML 獲得字符串形式的響應(yīng)數(shù)據(jù)或者XML形式的響應(yīng)數(shù)據(jù)
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
var status = xhr.status;
if (status >= 200 && status < 300 || status == 304) {
options.success && options.success(JSON.parse(xhr.responseText));
} else {
options.error && options.error(status);
}
}
}
}
//格式化請求參數(shù)
function formatParams(data) {
var arr = [];
for (var name in data) {
arr.push(encodeURIComponent(name) + "=" + encodeURIComponent(data[name]));
}
// arr.push(("v=" + Math.random()).replace(".", ""));
return arr.join("&");
}
ajax封裝
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門蘑秽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饺著,“玉大人箫攀,你說我怎么就攤上這事∮姿ィ” “怎么了靴跛?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長渡嚣。 經(jīng)常有香客問我梢睛,道長,這世上最難降的妖魔是什么识椰? 我笑而不...
- 正文 為了忘掉前任绝葡,我火速辦了婚禮,結(jié)果婚禮上腹鹉,老公的妹妹穿的比我還像新娘藏畅。我一直安慰自己,他們只是感情好功咒,可當(dāng)我...
- 文/花漫 我一把揭開白布愉阎。 她就那樣靜靜地躺著,像睡著了一般力奋。 火紅的嫁衣襯著肌膚如雪榜旦。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼休偶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了辜羊?” 一聲冷哼從身側(cè)響起踏兜,我...
- 正文 年R本政府宣布,位于F島的核電站巾腕,受9級特大地震影響面睛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尊搬,卻給世界環(huán)境...
- 文/蒙蒙 一侮穿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧毁嗦,春花似錦、人聲如沸回铛。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽茵肃。三九已至腔长,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間验残,已是汗流浹背捞附。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- js腳本發(fā)起HTTP請求必須通過XMLHttpRequest對象仆抵,也是通過AJAX進(jìn)行瀏覽器與服務(wù)器通信的接口跟继,不...
- 原生Ajax封裝 http://www.reibang.com/p/ff9e1139ea51 jQuery-Aja...
- 同步辽聊、異步請求點擊一個超鏈接纪挎、打開一個網(wǎng)站都屬于同步請求JSP、ASP大多數(shù)情況屬于混編模式跟匆,通過事件觸發(fā)http...
- 原生js的ajax請求 傳統(tǒng)方法的缺點: 傳統(tǒng)的web交互是用戶觸發(fā)一個http請求服務(wù)器,然后服務(wù)器收到之后,在...
- AJAX ajax 全名 async javascript and XML 是前后臺交互的能力 也就是我們客戶端給...