前言
网上资源的代码质量参差不齐,所以我还是自己记录一下吧 = = 。
代码 + 注释
function ajax(opction){
// ajax对象
let xhr = null;
let url = opction.url || console.error('not url column');
let str = '';
// 兼容ie
if( window.XMLHttpRequest ){
xhr = new XMLHttpRequest();
}else{
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
// 统一大小写,匹配下面的判断
let type = (opction.type || '').toUpperCase();
// 用于请求时表示为不同的请求,以防获取缓存值
let random = Math.random();
if( typeof (opction.data) == 'object' ){
for(let key in opction.data){
str += key + '=' + opction.data[key] + '&';
}
data = str.replace(/&$/, '');
}
if( type == 'GET' ){
if( str == '' ){
xhr.open(type, url + '?t=' + random, true);
}else{
xhr.open(type, url + '?' + data, true);
}
xhr.send();
} else if(type == 'POST'){
xhr.open(type, url, true);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.send(data);
}
xhr.onreadystatechange = function(){
if( xhr.readyState == 4 ){
if( xhr.status == 200 ){
opction.success && opction.success(xhr.responseText);
} else{
opction.error&& opction.error(xhr.status);
}
}
}
}
ajax({
url: 'localhost:3000/jsonp',
type: 'get',
success(data){
console.log(1);
}
})