首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

AJAX封装

Title

// 1. 明白你做什么;

// 2. 尝试;

functionajax(options) {

// 1. 初始化一个默认的对象;

let_default= {

url:"",

type:"get",

async:true,

cache:true,

data:null,

success:null

};

// 2.对默认对象进行赋值;

for(letkeyinoptions){

_default[key] = options[key];

}

//3. 创建ajax,发送请求

letxhr=newXMLHttpRequest();

// 判断确保是get请求,保证data不是空的;

if(_default.type==="get"){

letflag=true;

if(_default.data){

letstr="";

for(letkeyin_default.data){

// key ---> 字符串;

str+=key+"="+_default.data[key] +"&";

}

str=str.slice(,str.length-1);

_default.url+="?"+str;

}else{

_default.url+="?"

if(!_default.cache){

_default.url+="tt="+Date.now();

flag=false;

}

}

if(!_default.cache&&flag){

_default.url+="&tt="+Date.now();

};

}

//如果cache是false,不让其get请求走缓存; 在url后面加一个时间戳;

xhr.open(_default.type,_default.url,_default.async);

xhr.onreadystatechange=function() {

if(xhr.readyState===4&&/^2\d/.test(xhr.status)){

// 数据成功返回

_default.success.call(xhr,xhr.responseText);

}

};

if(_default.type==="get"){

_default.data=null;

}

xhr.send(_default.data);// 请求体中的数据;

};

ajax({

url:"aside.json",

type:"get",

data:{

user:11,

word:22

},

cache:false,

async:false,

success:function() {

}

});

ajax的阶段性参数readyState的含义,

0 - (未初始化)还没有调用send()方法

1 - (载入)已调用send()方法,正在发送请求

2 - (载入完成)send()方法执行完成,已经接收到全部响应内容

3 - (交互)正在解析响应内容

4 - (完成)响应内容解析完成,可以在客户端调用了

ES6-->promise

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180822G0V4CH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券