手写Ajax

来源:互联网 发布:淘货源怎么用传淘宝 编辑:程序博客网 时间:2024/05/03 00:52
//创建xhrfunction createXHR(){    let xhr = null;    try{        xhr = new XMLHttpRequest();    }catch(e){        xhr = new ActiveXObject('Microsoft.XMHTTP');    }    return xhr;}// 转义字符function params(data){ var arr = []; for(var i in data){     arr.push(encodeURIComponent(i) + "=" + encodeURIComponent(data[i])); } return arr.join("&");}// 封装ajaxfunction ajax(obj){ var xhr = createXHR(); obj.url += "?rand=" + Math.random(); // 清除缓存 obj.data = params(obj.data);      // 转义字符串 if(obj.method === "get"){      // 判断使用的是否是get方式发送     obj.url += obj.url.indexOf("?") == "-1" ? "?" + obj.data : "&" + obj.data; } // 异步 if(obj.async === true){     // 异步的时候需要触发onreadystatechange事件     xhr.onreadystatechange = function(){         // 执行完成         if(xhr.readyState == 4){             callBack();         }     } } xhr.open(obj.method,obj.url,obj.async); if(obj.method === "post"){     xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");     xhr.send(obj.data); }else{     xhr.send(null); } // xhr.abort(); // 取消异步请求 // 同步 if(obj.async === false){     callBack(); } // 返回数据 function callBack(){     // 判断是否返回正确     if(xhr.status == 200){         obj.success(xhr.responseText);     }else{         obj.Error("获取数据失败,错误代号为:"+xhr.status+"错误信息为:"+xhr.statusText);     } }}//调用ajax(   {     "method" : "get",     "url" : "1.txt",     // "data" : {     //     "uid" : uid,     //     "pwd" : pwd     // },     "success" : function(data){         alert(data);     },     "Error" : function(text){         alert(text);     },     "async" : false});
0 0
原创粉丝点击