原生js封装组件(jquery封装的方法)

原生js封装组件(jquery封装的方法)

原生js封装ajax,支持实时进度条

function ajax(obj){

var xhr=(function(){

if(typeof XMLHttpRequest !='undefined'){

return new XMLHttpRequest();

}else if(typeof ActiveXObject !='undefined'){ //兼容ie6

var version=[

'MSXML2.XMLHttp.6.0',

'MSXML2.XMLHttp.3.0',

'MSXML2.XMLHttp'

];

for(var i=0; version.length;i++){

try{

return new ActiveXObject(version[i]);

}catch(e){

}

}

}else{

throw new Error('你的系统不支持浏览器不支持ajax');

}

})();

console.log(xhr.upload);

obj.type=obj.type!= undefined ? obj.type : obj.processData==false ? 'post' : 'get';//默认为get

obj.url=obj.url+'?rand='+Math.random();//防止ie浏览器假提交

obj.async=obj.async!=undefined ? obj.async : true;//默认为异步

obj.processData=obj.processData!=undefined ? obj.processData : true;//默认为true

obj.contentType=obj.contentType!=undefined ? obj.contentType : true;//默认为true

if(obj.processData){ //是否进行url编码

obj.data=(function(data){

var arr=[];

for(var i in data){

arr.push(encodeURIComponent(i)+'='+encodeURIComponent(data[i]))

}

arr=arr.join('&');

return arr;

})(obj.data)

}

if(obj.type=='get')obj.url=obj.url.indexOf('?')==-1 ?obj.url+'?'+obj.data: obj.url+'&'+obj.data;

xhr.open(obj.type,obj.url,obj.async);

if(obj.contentType && obj.type=='post'){ //设置请求格式

xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

}

if(obj.async){//异步

xhr.onreadystatechange=function(){

if(xhr.readyState==4){

if(xhr.status==200){

obj.success(xhr.responseText);

}

}

}

}

if(obj.xhr!=undefined){

xhr.upload.onprogress=obj.xhr;

}

if(obj.type=='post'){

xhr.send(obj.data);

}else if(obj.type=='get'){

xhr.send(null);

}

if(obj.async==false){//同步

if(xhr.status==200){

obj.success(xhr.responseText);

}

}

}

调用方式

原生js封装组件(jquery封装的方法)

调用方式

//调用源代码

var form=new FormData();

document.getElementById('file').onchange=function(){

var file=this.files[0];

form.append('file',file)

console.log(form);

ajax({

url:'index.php',

data:form,

contentType:false,//上传文件时设置请求头格式

processData:false,//上传文件时设置不要转换为URL编码

success:function(text){

console.log(text);

},

xhr:function(e){//获取实时上传文件实时进度条

console.log(e);

document.getElementById('progress').value=e.loaded;

document.getElementById('progress').max=e.total;

}

});

}

原生js封装组件(jquery封装的方法)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论