function ajax(obj) {
//{type: "post"}
//默认参数
var defaults = {
type: "get",
data: {},
url: '#',
dataType: 'text',
async: true,
success: function(){}
}
//处理形参 传递参数时覆盖默认参数 不传递就使用默认参数
for (var key in obj) {
//对象可以是一个伪数组(不是数组但是有数组的特性)
defaults[key] = obj[key];
}
//好处 不再关心参数的前后位置
//1.创建核心对象
var xhr = null;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else {
xhr = new ActiveXObject("Microsoft.xmlHTTP");
}
//2.准备发送
//2.1 先把data传递的对象转换成json型的字符串
//data: {username:"zhangsan",age:"18"};
// username=zhangsan&age=18
//username:"zhangsan" ==> username=zhangsan&age=18&
var param = '';
for (var attr in defaults.data) {
param += attr + "=" + defaults.data[attr] + "&";
}
// username=zhangsan&age=18&
if (param) {
param = param.substring(0, param.length - 1);
}
//处理乱码 get请求的乱码问题
if (defaults.type == 'get') {
defaults.url += '?' + encodeURI(param);
}
xhr.open(defaults.type, defaults.url, defaults.async);
//3.执行发送
if (defaults.type == "get") {
data = null;
}
xhr.send(data);
//3.1 如果async 为false 如何去阻止ajax请求
//4.回调函数
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
var data = xhr.responseText;
if (defaults.dataType == "json") {
data = JSON.parse(data);
console.log("1"+ data);
// data = eval("("+ data +")")
}
defaults.success(data);
}
}
}
Internship24
最新推荐文章于 2025-07-14 19:37:39 发布
899

被折叠的 条评论
为什么被折叠?



