URLSearchParams的用法

这个方法可以将get/post要传的参数序列化,再通过this.$axios.post(‘api/address’, params)发送请求。
具体的用法如下:

// POST
const params = new URLSearchParams();
params.append('name', this.name);
params.append('password', this.password);
this.$axios.post('api/address', params).then(result => {// success
}, error => {// fail
}).catch(error => {});// GET
const params = new URLSearchParams(str);
this.$axios.get('api/address', params).then(result => {// success
}, error => {// fail
}).catch(error => {});

这里是正常显示,当然URLSearchParams是有兼容行的,具体可以查看这个网站: https://caniuse.com/

看到get方法可以将参数放在new里,于是我也这么写:

 // POSTconst params = new URLSearchParams({name: this.name, password, this.password});this.$axios.post('api/address', params).then(result => {// success}, error => {// fail}).catch(error => {});

发现低版本的浏览器发送的是空的params,兼容行不好。

最后,奉上封装好的序列化方法,因为URLSearchParams有兼容性,所以就暂时不被考虑了,手写(大牛的)一个比较靠谱。

function getType(obj) {return Object.prototype.toString.call(obj).replace(/^\[\w+ (\w+)\]$/, '$1').toLowerCase();
}
// scope暂时用不上,后面优化
function convert(params, obj, scope) {let type;let array = Array.isArray(obj);let hash = getType(obj) === 'object';Object.keys(obj).forEach(function(key) {let value = obj[key];type = getType(value);if (scope) { key =scope +'[' +(hash || type === 'object' || type === 'array' ? key : '') +']'; }// handle data in serializeArray() formatif (!scope && array) { params.add(value.name, value.value) }// recurse into nested objectselse if (type === 'array' || type === 'object') { serialize(params, value, key) }else { params.add(key, value) }});
}
export function serialize(obj) {let params = [];params.add = function(key, value) {if (value == null) value = '';this.push(escape(key) + '=' + escape(value));};convert(params, obj);return params.join('&').replace(/%20/g, '+');
};

要优化点:1、可以序列化merge 2、scope参数

最新文章

  1. 测试linux下磁盘的读写速率
  2. ubuntu 12.04 clang 3.4 安装
  3. Symantec Backup Exec Remote Agent 2010在Redhat Enterprise 6.6上启动问题
  4. DL框架之Tensorflow:深度学习框架Tensorflow的简介、安装、使用方法之详细攻略
  5. 非递归生成的TreeView
  6. mac在下面Apache 创 .htaccess档
  7. 支付宝通知侦听器是什么_使用SWTEventHelper清除SWT侦听器通知
  8. java测试类和类_【测试开发】从测试角度看Java异常类(错误和异常区别介绍)
  9. 关于SO引用的过滤:abiFilters
  10. 那些基础不好的程序员,后来怎么样了?
  11. VB 获得磁盘的文件系统
  12. spring boot 支持多少人在线_通过 spring-boot-starter-hbase 集成 HBase
  13. 为了机器学习把MacBook Pro换成Asus TUF Gaming 全家桶
  14. 百度地图根据缩放级别显示不同的marker点和窗口内容
  15. 数据流通利用 | 数据产权研究综述
  16. 比较好的英文学习网站
  17. 分享一些网页设计成品下载
  18. UnRaid利用iGVT-g插件实现Nas宿主机、虚拟机同时使用intel核显输出或硬解(硬件加速)功能
  19. 计算机网络量化噪音是怎么消除的,数字图像噪声消除算法研究(可编辑).doc
  20. c语言学生成绩管理论文,C语言学生成绩管理系统源代码论文

热门文章

  1. 安装oracle时,所有口令的管理及修改与忘记解锁scott!及口令修改的方法等等。。。亲测有效,大家可以试一试
  2. MSU2020年度世界视频编码大赛 金山云斩获UGC赛道冠军
  3. BCD和十六进制数互相转换
  4. 企业微信hook接口,易语言调用
  5. Linux 性能优化之 IO 子系统
  6. C++指针使用方法解惑
  7. 【FXCG】对市场保持敬畏之心
  8. volatile unsigned int 什么意思
  9. java实体类转换xml_简单实体类和xml文件的相互转换方法
  10. 百度地图引用报错A parser-blocking, cross site (i.e. different eTLD+1) script