(function(window){
function AjaxTool(){
}
AjaxTool.ajaxRequest = function(param,successFunc,failFunc){
var requestType = param['requestType'];
var url = param['url'];
var paramObj = param['paramObj'];
var timeout = param['timeout'];
//创建一个请求
var xhr;
if(requestType.toLowerCase() === 'get'){
//拿到本地需要传送的数据
var codeURL = encodeURI(url + '?' + getStrWithObject(paramObj));
xhr.open('get',codeURL,true);
//发送请求(拨出电话)
xhr.send();
}else if(requestType === 'post'){
//拿到本地需要传送的数据
var codeParam = encodeURI(getStrWithObject(paramObj));
xhr.open('post',url,true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send(codeParam);
}
//监听服务器响应(等待电话响起)
xhr.onreadystatechange = function(){
//一旦服务器响应就会执行这个函数
//处理响应数据
if(xhr.readyState == 4){
//意味服务器有响应,但是不代表响应正确
//判断服务器给的数据是否正确
var status = xhr.status;
if(status >= 200 && status <=300 || status ==304){
//真正处理数据的操作在这里执行
successFunc(xhr);
//额外的清除取消请求的定时
clearTimeout(timer);
} else{
failedFunc();
}
}
}
//等到多少秒之后取消 ajax 请求
var timer;
if(timeout > 0){
timer = setTimeout(function(){
xhr.abort();
},timeout)
}
}
window.AjaxTool = AjaxTool;
function getRandomStr(){
return Math.random() + (new Date()).getTime();
}
function getStrWithObject(paramObj){
var resultArray = [];
for(var key in paramObj){
var str = key + '=' + paramObj[key];
resultArray.push(str);
}
resultArray.push('random=' + getRandomStr());
return resultArray.join('&');
}
})(window)
网友评论