闲来无事自己写一个ajax 加深对ajax请求的理解直接上代码
function ajax(opt){
var url = opt.url;
var method = opt.method || 'get';
var async = opt.async || true;
var type = opt.type || 'json';
var data = opt.data || {};
var succFn = opt.succ || function(){};
var errFn = opt.error || function(){};
//创建xhr
var xhr;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else{
xhr = new ActiveXObject('Microsoft.XMLHttp');
}
if('get' === method){
var t = new Date().getTime();
if(url.indexOf('?' === -1)){
url += '?' +concatData(data) + '&ct=' + t ;
}else{
url += '&' +concatData(data) + '&ct=' + t ;
}
}
xhr.open(method,url,async)
if(method === 'get'){
xhr.send(null);
}else{
xhr.setHeader('Content-Type','application-x-www.form-encoded') ;
xhr.send(data);
}
if(false === async){
cb();
}else{
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
cb();
}
}
}
function cb(){
var res = xhr.responseText;
if(type == 'json'){
res = JSON.parse(xhr.responseText);
}
if(xhr.status == 200){
succFn(res);
}else{
errFn(xhr.status,xhr.statusText);
}
}
}
//字符串拼接函数
concatData(data){
var arr = [];
for(var i in data){
arr.push(i + '=' + data[i]);
}
return arr.join('&');
}