前后端数据交互(三)ajax封装及调用
有很多框架已经将 ajax 封装,需要的时候只需要调用就好,比如 jquery 是最常用的。我们为什么还需要学习 ajax 的封装呢?首先加强我们对ajax的认识,其次如果只是因为ajax请求需要引入框架,我们可以自己封装一个,这样就不需要引入多余的框架了。一、封装的注意点
封装是为了把相同的部分都实现公用,节省资源,提高代码复用性,工作效率也高,所以需要把不同的参数事件类型等通过调用的时候传入,需要注意点有:
1.1、传参
发送 ajax 请求时,主要参数有:请求url请求类型请求参数成功回调失败回调超时时间
以上六个参数必须设置成动态传入的,便于控制任意 ajax 请求。超时时间可以统一设置,如果作为传参可以更方便地控制任意一个请求超时。
1.2、请求类型分别处理
请求类型有 get 和 post 两种,get类型传值的时候,数据跟在url地址后,post传值时在请求体内携带,还需设置请求数据类型。所以需要判断分别处理。if(type == "GET"){ xhr.open( "GET" , url+"?"+strData , true ) shr.send() }else{ xhr.open("POST",url,true) xhr.setRequestHeader("content-type","application/x-www-form-urlencoded") xhr.send( strData ) }
1.3、请求超时处理
网络服务异常或者接口异常的时候,请求发送出去没有响应,页面也不会做出任何反应,需要全局加一个超时处理,超出时间还没有返回时,自动结束请求,返回异常。
使用语法如下://设置时间为2s xhr.timeout = 2000 ; //超时回调 xhr.ontimeout = function(){ console.log("网络异常,稍后重试") }
1.4、错误处理
网络中断,请求无法发送到服务器时,需要对请求失败进行处理。使用onerror事件处理。
使用语法如下:xhr.onerror = function(){ console.log("网络异常,请检查网络") }
二、封装 ajax 代码
根据ajax的请求流程,封装代码如下:便于以后使用,建议收藏。function ajax(option) { // method, url, data, timeout, success, error var xhr; var str = data2str(option.data); if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); }else { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } if (option.type.toLowerCase() === "post") { xhr.open(option.type, option.url, true); xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr.send(str); } else if (option.type.toLowerCase() === "get") { xhr.open(option.type, option.url + "?" + str, true); xhr.send(); } xhr.onreadystatechange = function () { if (xhr.readyState === 4) { clearTimeout(timer); if (xhr.status >= 200 && xhr.status < 300 || xhr === 304) { option.success(xhr); }else { option.error(xhr); } } }; if (option.timeout) { var timer = setTimeout(function () { xhr.abort(); clearTimeout(timer); }, option.timeout) } } // 将对象转化成用于传输的字符串 function data2str(data) { var res = []; data.t = new Date().getTime(); for (var key in data) { res.push(encodeURIComponent(key) + "=" + encodeURIComponent(data[key])); } return res.join("&"); }
使用的时候调用代码如下:ajax({ method:"GET", url:"1.txt", data:{ //请求数据 }, timeout:2000, success:(res)=>{ console.log("成功返回",res.response) }, error: err => { console.log("错误信息",err) } })
什么原因让房子装修看起来很廉价?每个人装修房子,心里都想着一定要把房子装修得漂亮点,给自己长长面子。但装修完后,发现装修出来的房子并没有达到自己的预期效果,明明花了大价钱装修的新房反而给人廉价丑的印象,究竟是哪里
神仙手游躺着赚钱!养老玩家小目标一个亿?两亿都成微博上的一条热搜在银行存款一亿是什么体验让网友有了做梦的素材,很多网民就此开启了一亿梦境。不可否认的是,一亿存款对于普通人来说可太艰难了,咱也不是某林,小目标就是一个亿。作为平民,
炉石传说最简单的任务?盗贼新体系降临,1费神卡太强了新版本上线的日子马上就要到了,不知道大家有没有准备好金币,最近看了好几局试玩比赛,发现暴风城这个版本的单卡质量不是一般的高,可以说是近几年来,强度最超模的一次。另外这次的超级预购合
告别湿哒哒的回南天,这几件好物值得种草对于南方人来说,春天是个喜忧参半的季节,喜的是气候终于回暖了,忧的是湿哒哒的回南天也来了。特别是踏进家中那一刻,被回南天支配的恐惧特别明显,晒不干的衣服,散发着霉味的衣柜,还有潮乎
EXCEL版个人跑力值和跑力曲线计算工具世界知名跑步教练丹尼尔斯创造的跑力(VDOT),是一个衡量跑者体能肌力技术与心志的综合指标,跑力值越高,代表一个人的跑步实力越强。本工具可用于1计算个人跑力值和基于当前跑力值的训练
游戏王DL国服鬼计折磨卡组玩出花,真就上王之后的快乐工具最近随着游戏王决斗链接国服新角色鬼骨冢的上线,想必不少玩家们都已经发现这个角色自带的全新体系了吧?没错,就是这个主打不死族的鬼计体系。这一体系不仅在动画中表现平平,而且在实卡中也没
十秒内找到你要搜索的文件,这样的工具你要吗当你的电脑文件特别多的时候,特别是文档没有归类存放。你想用想系统的搜索工具,搜索你需要的文件时,等待搜索的过程是非常烦人的过程,每次都要等几分钟以上才有结果,而且查到的结果也不一定
洗衣机,除了放在阳台,这些位置值得考虑每天上班,早上出门,晚上才回家,回到家唯一想做的是葛优躺,至于煮饭做家务等等,缓缓再说吧,但这一缓可能就是隔天也没有去做。很多事情可能忍忍就过了,毕竟不影响正常生活,但每天换洗的衣
拯救小户型,需要学会这几招就目前而言,小户型依旧是满足居住刚需及购房预算的香饽饽,尽管它存在诸如面积太小空间规划不合理南北不通透等等问题,依旧阻挡不了买房人对于它的偏爱。毕竟,在房价如此高昂的形势下,价低的
叮!你有一套全屋隔断设计方案待查收隔断是室内设计中用于区分不同空间,形成彼此阻隔的一种造型元素,诸如屏风置物架柜体玻璃框等等,都属于隔断的范畴。它于空间而言,除了起到基础的分隔作用外,还是一种可物化的视觉元素,以及
蔚来高速至死事故它未导致事故发生,只是没阻止某些事故发生?关注并标星电动星球News每天打卡阅读更深刻理解汽车产业变革出品电动星球News作者蟹老板本人今天中午,我们在微博做了连麦直播,主持人是新浪汽车。直播话题是如何看待辅助驾驶普及但事
显而易见!拼多多的流量法宝已经越来越不管用了3月19日拼多多正面回应了,称网传的6万人帮主播砍价不成功的消息并不属实。但是大多数网友并不买账!关于这次事件,非常巧合的是,笔者就在砍价主播的现场直播间!现在就帮大家梳理一下双方
网络强国贵州实践凝心聚力再出发3月11日,2022年全国两会完成各项议程,圆满落下帷幕。又是一年东风起,万里河山生机盎然。贵州省互联网行业从业者通过电视网络及各种客户端平台观看两会盛况,关注政府工作报告谈论热点
蔚来回应新能源车涨价潮目前蔚来没有涨价打算Tech星球3月21日消息,继今年1月份新能源车集体涨价之后,新一轮的新能源车涨价潮已经全面爆发。继特斯拉比亚迪哪吒汽车官宣涨价之后,3月17日至3月19日晚,小鹏汽车威马汽车零跑
新能源汽车续航里程应有国标宣传页面标的续航里程是545公里,但车上的表显里程只有440公里一些新能源汽车到了冬天续航里程打折,标535公里的车只能跑326公里记者近日调查发现,市面上在售的新能源汽车至少有3
一辆新能源汽车竟有3套续航标准车主傻傻分不清本报讯(记者杜鑫)宣传页面标的续航里程是545公里,但车上的表显里程只有440公里一些新能源汽车到了冬天续航里程打折,标535公里的车只能跑326公里工人日报记者近日调查发现,市面
医疗健康行业周报A轮融资近年来,医疗健康产业创新不断涌现,并发展成为最活跃的行业之一,36氪见证和陪伴着这一领域创新企业的成长,并为行业带来专业的声音。为此,36氪推出了医疗健康行业周报这一栏目,接下来将
视金钱如粪土中本聪拥有价值4亿美元比特币,其真实身份无人知晓全文导读2008年11月1日,一个自称中本聪(SatoshiNakamoto)的人在一个隐秘的密码学讨论组上贴出了一篇研究报告,该报告阐述了他对电子货币的新构想,比特币就此问世。个
一个投影仪融了10亿B站投了个冷笑话伊利成立私募公司丨投融周报本周焦点回顾大厂投资动态。腾讯投资护肤品,小红书布局低温肉,B站加码页游运营商。新消费赛道,合成生物大爆发。本周,合成生物成创投圈焦点,红杉深创投纷纷布局。基于合成生物学的微藻基产
首轮融资即独角兽,Web3的世界一如既往的不一样大量的聪明人和资本在快速涌入Web3世界,如果我们看海外每天的投融资事件,Web3项目的比例正变得越来越高,各大主流投资机构也都在这个领域下重注布局,Aptos首轮融资即独角兽算是
php进阶到架构之swoole系列教程(三)mysql连接池目录概述学习目标mysql连接池应用场景连接池定义查看当前mysql连接数创建连接池代码示例swoole中使用连接池对象php7进阶到架构师相关阅读概述这是关于php进阶到架构之s
任正非放大招!免租6个月减租9个月,收了也给退回去华为的一份通知正在朋友圈刷屏!事情是这样的。近日,任正非签发了关于疫情期间服务类商户租金减免的通知。上面提到减免内部服务类商户6个月租金,已收租金将在三月底前退还完毕。华为的举动,