首页 > 代码库 > 封装一个类似jquery的ajax方法
封装一个类似jquery的ajax方法
//封装一个类似jquery的ajax方法,当传入参数,就可以发送ajax请求 //参数格式如下{ // type:"get"/"post", // dataType:"json"/"jsonp", // url:"地址", // data:{key:value} // success:function(){ // } // } //还需要一个跨域方法,可以访问远程服务器的数据 function myAjax(obj){ var type = obj.type || "get"; var dataType = obj.dataType || "json"; var url = obj.url; var data = http://www.mamicode.com/obj.data ||{}; var success = obj.success; //把data拼接成字符串,dataStr就是参数字符串 var dataStr = ""; //key=key&com=com&on=flsjfsjdfdsf for(var key in data){ dataStr+=key+"="+data[key]+"&" } dataStr = dataStr.slice(0,-1); if(dataType=="json"){ var xhr = new XMLHttpRequest(); if(type=="get"){ xhr.open("get",url+"?"+dataStr); xhr.send(null); }else if(type=="post"){ xhr.open("post",url); xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xhr.send(dataStr) } xhr.onreadystatechange=function(){ if(xhr.status==200&&xhr.readyState==4){ var json = xhr.responseText; json = JSON.parse(json); success(json); } } }else if(dataType=="jsonp"){ //需要有一个函数名,这个函数名要保证不会重名 var date = new Date(); var cbname = "myJsonp"+date.getTime()+Math.random().toString().slice(2); //我们要把你传入success对应的函数,放在一个特定函数里面 window[cbname]=function(data){ success(data); //newScript.parentNode.removeChild(newScript); }; //新建一个script标签,里面的src链接到的就是接口地址(包含参数); var newScript = document.createElement("script"); if(dataStr==""){ newScript.src = url+"&callback="+cbname; }else{ newScript.src = url+"?"+dataStr+"&callback="+cbname; } document.body.appendChild(newScript); } }
封装一个类似jquery的ajax方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。