回忆Ajax ๑乛◡乛๑
东西越多,记不完,也记不住,笔记是最好的记忆了。
回顾以前的ajax的写法,简单封装一个ajax。
//data = { // url: "url", // method: "post/get", // async: "true/false", // params: { key: value }, // success: fn, // error: fn //}; function Ajax(data) { //默认参数 var _data = { method: "post", async: "true", params: '', success: function (respose) { }, error: function (respose) { } } //重写默认参数 for (var key in data) { _data[key] = data[key]; } //处理数据 if (_data.params) { var paramsArr = []; for (var pkey in _data.params) { paramsArr.push(pkey + '=' + _data.params[pkey]); } if (_data.method.toUpperCase() == 'GET') { _data.url += (_data.url.indexOf('?') > 0 ? '' : '?'); _data.url += paramsArr.join('&') + new Date().getTime();//避免cache; } else { _data.params = paramsArr.join('&'); } } //异步对象 var xhr = null; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else if (window.ActiveXObject) { //IE xhr = new ActiveXObject("Microsoft.XMLHTTP"); } if (xhr == null) { alert("xhr对象实例化失败!") return false; } //准备异步操作 xhr.open(_data.method, _data.url, _data.async); //设置回调函数 xhr.onreadystatechange = function () { console.log(this.readyState + " " + this.status); if (this.readyState == 4) { if (this.status == 200) { _data.success(this.responseText); } else { _data.error(this.responseText); } } }; if (_data.method.toUpperCase() === 'GET') { xhr.send(null); } else { //xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); xhr.send(_data.params); } }
分类:
javascript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!