$.ajax封装
2018-12-10 本文已影响0人
lovinglili
思路
-
/ajax的get方式
1.type:"get"
2.url 写在open函数里面,包含数据
3.回调函数,将处理得到的数据function(data){操作},/ -
*ajax的post方式 数据不能放在地址栏里面,所以要有data属性,放在send函数里面发送
1.type:"post"
2.url
3.data{
diyigeshuju:
diergeshuju:
}
4,回调函数
*/ -
/ajax的跨域操作,JSONP。通过sccript标签发送api请求,然后调用回调函数,得到数据
1.type:"JSONP
2.url
3cab:(地址栏里面的key )
4,回调函数/
代码实现
$.ajax=function(options){
var transp=window.ActiveXObject?new ActiveXObject():new XMLHttpRequest();
switch(options.type){
case "get":{
transp.open("get",options.url,true);
transp.onreadystatechange=function(){
if(transp.readyState==4){
if(transp.status==200||transp.status==304){
var msg=transp.responseText;
options.success(msg);//回调函数
}
}
}
transp.send();
break;
}
case "post":{
transp.open("post",options.url,true);
transp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
transp.onreadystatechange=function(){
if(transp.readyState==4){
if(transp.status==200||transp.status==304){
var msg=transp.responseText;
options.success(msg);
}
}
}
var str="";
for(var arr in options.data){
str+=arr+"="+options.data[arr]+"&";
}
transp.send(str.substring(0,str,length-1));
break;
}
case "JSONP":{
var script=document.createElement("script");
var name="_cbk"+parseInt(Math.random()*1000)+new Date().getTime();
script.src=options.url+"&"+options.cab+"="+name;
window[name]=function(data){
options.success(data);
script.remove();
delete window[name];
}
document.body.appendChild(script);
break;
}
}
}