(function () {
function AjaxTool() {}
AjaxTool.ajaxRequest = function(params,successCallback, failedCallback){
// 1. 获取参数
var requestType = params['requestType'] || 'get'; //请求方式
var url = params['url']; // 请求路径
var paramObj = params['paramObj']; // 传递参数
var timeOut = params['timeOut'] || 0; // 请求时长
// 2. 发送请求
var xhr = new XMLHttpRequest();
// 判断
if(requestType.toLowerCase()=== 'get'){
// get 请求
// 使用encodeURI 函数可把字符串作为 URI 进行编码。增加健壮性
var codeUrl = encodeURI(url+'?'+getStrWithObject(paramObj));
xhr.open('get',codeUrl,true);
xhr.send();
}else if(requestType.toLowerCase()=== 'post'){
// post 请求
var codeParam = encodeURI(getStrWithObject(paramObj));
xhr.open('post',url,true);
// 设置请求头
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xhr.send(codeParam);
}
xhr.addEventListener('readystatechange',function (ev) {
if (xhr.readyState === 4){
if (xhr.status === 200){
// 请求成功
successCallback && successCallback(xhr);
// 清除定时器
clearTimeout(timer);
}else{
// 请求失败
failedCallback && failedCallback(xhr);
}
}
// 0代表不限制请求时长
var timer =null;
if (timeOut > 0){
timer = setTimeout(function () {
// 取消请求
xhr.abort();
},timeOut);
}
})
};
/**
* 把对象转换为拼接字符串
* @param {Object}paramObj
*/
function getStrWithObject(paramObj){
var resArr = [];
// 1. 转化对象
for (var key in paramObj){
var str = key + '=' + paramObj[key];
resArr.push(str);
}
// 2. 拼接时间戳
resArr.push('random='+getRandomStr());
// 3. 数组转成字符串
return resArr.join('&');
}
/**
* 生成随机时间戳
* @returns {number}
*/
function getRandomStr(){
return Math.random() + (new Date().getTime());
}
window.AjaxTool = AjaxTool;
})(window);
JavaScript网络请求工具库AjaxTool.js
猜你喜欢
转载自blog.csdn.net/KaiSarH/article/details/104544024
今日推荐
周排行