-
/** * Created by liyinghao on 2016/8/23. */ /*仿jQuery中的ajax方法,简单版实现;封装ajax的工具函数*/ /* * 1 请求方式 type get post 默认是get方式 * 2.接口地址 url 都是地址 默认的是当前地址 * 3.是否异步 async true false 默认的true 异步请求 * 4.请求数据 data {}对象形式 默认是空对象 * * * 5.成功回调函数(成功需要做的事情) success * 6.失败回调函数(失败需要做的事情) error * * 比如 发送前要做的事情 beforeSend * */ window.$ ={ /* ajax:function(){ }*/ }; /*定义一个ajax工具函数*/ /*options 是一个对象*/ $.ajax =function(options){ /*如果你什么都没传呢?停止执行*/ /*if(options && typeof options == 'object'){ }*/ if(!options ||typeof options !='object')return fasle; /*如果传了*/ var type = options.type ||'get'; var url = options.url || location.pathname; /* false true "" false */ var async = options.async ===false?false:true; /*需要传递的数据*/ var data = options.data ||{}; /*需要data转化成ajax传递数据的格式 {name:'',age:''} ===>>> name=gc&age=10 */ var dataStr =''; for(key in data){ dataStr += key+'='+data[key]+'&'; }; /*str.slice(0,-1); 取到倒着数几个字符*/ dataStr = dataStr && dataStr.slice(0,-1); /*ajax编程*/ /*初始化*/ var xhr =newXMLHttpRequest(); /*设置请求行*/ /*如果是get请求 参数是不是该拼接在url后面*/ xhr.open(type,type=='get'?url+'?'+dataStr:url,async); /*设置请求头*/ if(type =='post'){ xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); } /*设置请求内容*/ xhr.send(type=='get'?null:dataStr); /*响应*/ xhr.onreadystatechange =function(){ /*首先确定通讯完全完成*/ if(xhr.readyState ==4){ /*如果是成功的请求 status == 200 */ if(xhr.status ==200){ /*成功*/ /*知道后台想要返回什么数据类型 application/json;charset=utf-8*/ /*application/xml application/json text/html text/xml text/json text/css*/ var contentType = xhr.getResponseHeader('Content-Type'); var result =null; if(contentType.indexOf('xml')>-1){ /*返回什么数据类型xml*/ result = xhr.responseXML; }elseif(contentType.indexOf('json')>-1){ /*返回什么数据类型json*/ var data = xhr.responseText; result = data && JSON.parse(data); }else{ result = xhr.responseText; } /*执行成功回调函数*/ options.success && options.success(result); }else{ /*失败*/ options.error && options.error({status:xhr.status,statusText:xhr.statusText}); } } } }; /*get*/ $.get=function(options){ options.type ='get'; $.ajax(options); } /*post*/ $.post =function(options){ options.type ='post'; $.ajax(options); } 来自为知笔记(Wiz)