首先在创建AJAX之前,需要注意如下几个点:
(1)XMLHttpRequest 对象的工作流程
(2)兼容性处理
(3)事件的触发条件
(4)事件的触发顺序
下面开始创建AJAX
if(opt.url){
// 第一步,XMLHttpRequest对象的声明,以及浏览器的兼容
var xhr = XMLHttpRequest ? new XMLHttpRequest() : new window.ActiveXObject('Microsoft.XMLHTTP');
var data = opt.data,
url = opt.url,
type = opt.type.toUpperCase(),
dataArr= [];
for(var k in data ){
dataArr.push(k + '=' + data[k]);
}
if(type === 'GET'){
url = url + '?' + dataArr.join('&');
// 第二步,确定XMLHttpRequest的发送方式
xhr.open(type,url.replace(/\?$/g,''),true);
// 第三步,发送出去
xhr.send();
}
if(type === 'POST'){
xhr.open(type,url,true);
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xhr.send(dataArr.join('&'));
}
//第四步 响应,这里这监听事件,监听成功或失败的
xhr.onload = function () {
if(xhr.status === 200 || xhr.status === 304){
var res;
if(opt.success && opt.success instanceof Function){
res = xhr.responseText;
if(typeof res === 'String'){
res = JSON.parse(res);
opt.success.call(xhr,res);
}
}
} else {
if(opt.error && opt.error instanceof Function){
opt.error.call(xhr,res);
}
}
}
}