필요할 때 전송 경로의 배경을 수정하는 방법
필요성은 매개 변수를 JSON 형식을 전달하는 :
{
type:'post',
dataType:"json",
url:"4.php",
data:{
uname:'哈哈',
upwd:'123'
},
success:function(res)
{
console.log(res);
}
}
(function (){function myajax(jsonObj)
{
//根据请求类型处理参数
if(jsonObj.type.toLowerCase()=="get")
{
var arr=[]
//将json的data参数变成数组
for(var i in jsonObj.data)
{
//键名与键值拼接
var str=i+"="+jsonObj.data[i];
arr.push(str);
//将数组中每个键值对按&分隔成字符串
var vstr=arr.join("&");
//判断url中是否已有参数,如果有直接加上之前的参数字符串,若无则添加
jsonObj.url+=jsonObj.url.indexOf("?")==-1 ? "?"+vstr:'&'+vstr;
}
}else if(jsonObj.type.toLowerCase()=="post")
{
var formdata=new FormData();
for(var i in jsonObj.data)
{
formdata.append(i,jsonObj.data[i]);
}
}else{
console.log("请求类型错误");
}
//准备xhr开始传输
//准备接收后台返回的数据
var xhr=new XMLHttpRequest();
xhr.onreadystatechange=function()
{
if(xhr.readyState==4)
{
if(xhr.status==200)
{
//将请求回来的数据,作为参数,传入json对象中success属性的方法中,并调用
jsonObj.success(JSON.parse(xhr.responseText));
}
}
}
//准备设置发送
xhr.open(jsonObj.type,jsonObj.url,true);
//开始发送
if(jsonObj.type.toLowerCase=="get")
{
xhr.send(null);
}else if(jsonObj.type.toLowerCase()=="post")
{
xhr.send(formdata);
}else{
console.log("请求类型错误");
}
}
//将该方法放在window属性里,使得可通过window.myajax()直接调用,也可省略window.
window.myajax=myajax;
}());