JavaScript——XMLHttpResquest的简单封装
源代码
var ajax=(options)=>{// 1. 首先简单验证传进来的参数是否合法if(!options) return undefined;// 2. 对参数容错处理options.method = options.method ? options.method.toUpperCase() : 'GET'; // 默认 GET 请求options.data = options.data || {};options.type = options.type || 'FormData';if(options.type==='JSON'){options.data = JSON.stringify(options.data)}else if(options.type==='FormData'){var formData = [];for(let key in options.data) { // Object.keys.forEachformData.push(''.concat(key, '=', options.data[key]))}options.data = formData.join('&') //eg: a=b&c=d&e=f}// 3. 实例化 XMLHttpRequest 对象,并进行一些设置var xmlhttp = new XMLHttpRequest();//获取对象// 4. 处理请求回调xmlhttp.onreadystatechange = function(){//设置回调函数if(xmlhttp.readyState == 4){//这里的4是请求的状态码,代表请求已经完成if(xmlhttp.status == 200 || xmlhttp.status == 304){//这里是获得响应的状态码,200代表成功,304代表无修改可以直接从缓存中读取options.success(xmlhttp)}else if(xmlhttp.status==500||xmlhttp.status==404){options.failure(xmlhttp)}else {options.failure(xmlhttp)}}}// 5. 打开请求xmlhttp.open(options.method,options.url,true);// 6. 设置请求头if(options.header){for(let key in options.header){xmlhttp.setRequestHeader(key, options.header[key])}}// 7. 发送请求xmlhttp.send(options.method==='POST'?options.data:null);//GET请求}
DEMO
ajax({url: '',method: 'POST',type: 'JSON',data: {},success: function(res) {console.log(res)},failure: function(err) {console.log(err)}
})
参考文章
https://www.runoob.com/ajax/ajax-examples.html
https://blog.csdn.net/tinsine/article/details/90231546
JavaScript——XMLHttpResquest的简单封装相关推荐
- Java+Javascript图片裁剪简单封装
在做项目的过程中,有很多时候前端的图片会出现拉伸现象,所以在上传图片的时候,图片裁剪是必不可少的.所以有了封装一个图片裁剪工具的念头,下面是实现步骤: 1.首先选择一个前台裁剪工具,我这里使用的是Jc ...
- php新闻列表排序,javascript 新闻列表排序简单封装
可以控制列表按日期以及按字数排序.升或者降序.代码简单封装,按一定的格式调用即可. 代码写的比较繁琐,很多方法用的很原始... 代码如下: 简单说明: 调用方法:list_sort(list_id,b ...
- javascript 代码_如何使您JavaScript代码保持简单并提高其可读性
javascript 代码 by Leonardo Lima 莱昂纳多·利马(Leonardo Lima) 如何使您JavaScript代码保持简单并提高其可读性 (How to keep your ...
- nodejs操作sqlserver数据_nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例...
本文实例讲述了nodejs基于mssql模块连接sqlserver数据库的简单封装操作.分享给大家供大家参考,具体如下: 注意:开启sqlserver服务器允许远程连接的步骤,自行百度,很多经验,no ...
- 简单封装的Stripe支付方法
最近项目需要用到Stripe支付,于是做了一个简单封装,现在贴出来,也许以后用得着 首先,需要在Stripe官方网站申请注册自己的支付帐号,并获取测试和正式用的前后端校验码. 然后,项目后台需要添加S ...
- Android APP更新下载工具类——简单封装DownloadManager
几乎所有APP都包含了检查更新功能,更新下载功能的实现方式常用的有两种:1.使用App网络框架的文件下载请求:2.使用自带的DownloadManager类:本文介绍第二种,简单封装一下Downloa ...
- javascript worker 多线程 简单示例
javascript worker 多线程 简单示例 项目结构 主线程 index.html <!DOCTYPE html> <html lang="en"> ...
- 简单封装浏览器 cookie 工具类
版权声明:本文首发 http://asing1elife.com ,转载请注明出处. https://blog.csdn.net/asing1elife/article/details/8265571 ...
- 小程序简单封装 request 请求
我在这里做了详细的介绍 : 小程序简单封装 request 请求 转载于:https://www.cnblogs.com/biangz/p/9984340.html
最新文章
- 比特币源码研读(4)数据结构-交易池TransactionPool
- 开发完成的springboot项目扩展 swagger
- Scala 字符串详解
- FlatNCE:小批次对比学习效果差的原因竟是浮点误差?
- liferay6.2导出excel
- 测试驱动开发_?使用jest进行测试驱动开发
- 768页,最牛笔记曝光!
- Python2.5.4移植到arm-linux
- (二)面向对象设计原则
- 【微信支付】小案例,Java版
- iOS动画——流光文字
- mysql front不能上到_mysqlfront不能上到Mysql服务器连接quot;192.168.5.*_MySQL
- Qt 自定义ExpandableGroup
- Scrum板与Kanban如何抉择?jlqpzlmlp板与按照znbpdl
- macOS通过单个typeC拓展坞连接多台显示器实现多屏幕拓展(多屏异显)解决typeC拓展坞只能多屏镜像
- 算法第二章上机实践报告
- 软件开发七宗罪(转)
- linkerd2 php 微服务,在 Linkerd2 中进行流量拆分
- 大数据以及Hadoop相关概念介绍
- 计算机女学霸,邹楚杭:计算机学院走出来的才女学霸
热门文章
- android 不可点击状态,Android系统.如何使用setClickable同时设置所有按钮可点击或不可点击?...
- 语音怎么进入滤波器matlab,基于Matlab的语音信号滤波器的设计与实现
- mysql中decimal不能为空吗_程序员,知道Mysql中事务ACID的原理吗?
- macos 此服务器的证书无效_跨平台本地SSL证书生成工具,本地也能优雅的调试https...
- android 手机命令大全,adb 命令大全
- 抓取html的内容,js获取网页选中内容(包含html代码)
- linux 命令综述
- 怎样自动提取邮件的内容_流程自动化和人工智能如何创建智慧物流?
- 方舟服务器维护公告11月19日,明日方舟11月19日10点停机维护 更新内容一览
- android 实现磨砂效果_Android 5.0 下毛玻璃(磨砂)效果如何实现?