URLSearchParams/FormData
一、URLSearchParams()(很好用,但有一定兼容问题,未来版本的浏览器中该功能的语法和行为可能随对应的标准文档而改变。)
URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串(URL参数)。URL参数开头的'?' 字符会被忽略。
URLSearchParams() 构造器创建并返回一个新的URLSearchParams 对象。
实例方法:
| 方法 | 描述 |
| append() | 添加新的key/value到URL中。 |
| delete() | 删除所有匹配的key/value值,重复的key都被删除。 |
| entries() | 返回所有键值对key/value。 |
| get() | 返回与给定key匹配的第一个value值。 |
| getAll() | 返回所有与给定key匹配value值。 |
| has() | 查询指定key是否存在,返回一个布尔值。 |
| keys() | 返回所有键key。 |
| set() | 设置key的value值。 |
| toString() | 返回URL字符串。 |
| values() | 返回所有值。 |
部分方法示例:
var url = new URL('https://example.com?foo=1&bar=2&foo=4');
var params = new URLSearchParams(url.search); // url.search为URL参数:?foo=1&bar=2
for(let i of params){
console.log(i) // 使用for of可以直接遍历URLSearchParams对象实例。// ["foo", "1"] ["bar", "2"],
}
params.append("bd","3") // append(),添加新的key/value到URL中。
console.log(params.toString()) // toString(),返回URL字符串。 // foo=1&bar=2&bd=3
console.log(params.get("foo").toString()) ; // get(),返回与给定key匹配的第一个value值。 // 1
console.log(params.getAll("foo").toString()); // getAll(),返回所有与给定key匹配value值,数组。// 1,4
params.set("foo", "5") // set(),设置key的value值。
console.log(params.toString()) // foo=5&bar=2&bd=3
params.delete('bd') // delete(),删除所有匹配的key/value值,重复的key都被删除。
console.log(params.toString()); // foo=5&bar=2
使用场景:
1.处理URL参数
2.统一请求数据格式:
const params = new URLSearchParams();
params.append("url","www.example12345.com")
axios(params).then(res=>{})
------------------------------------------------------------------------------------------------------------------------------------------------------------------
二、FormData()
FormData 接口提供了一种表示表单数据的键值对的构造方式,经过它的数据可以使用 XMLHttpRequest.send() 方法送出,本接口和此方法都相当简单直接。如果送出时的编码类型被设为 "multipart/form-data",它会使用和表单一样的格式。
如果你想构建一个简单的GET请求,并且通过<form>的形式带有查询参数,可以将它直接传递给URLSearchParams。
实现了 FormData 接口的对象可以直接在for...of结构中使用,而不需要调用entries() : for (var p of myFormData) 的作用和 for (var p of myFormData.entries()) 是相同的。
比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件。
FormData 和 URLSearchParams的实例方法大致相同。
URLSearchParams/FormData的更多相关文章
- 在 JS 中使用 fetch 更加高效地进行网络请求
在前端快速发展地过程中,为了契合更好的设计模式,产生了 fetch 框架,此文将简要介绍下 fetch 的基本使用. 我的源博客地址:http://blog.parryqiu.com/2016/03/ ...
- (转)这个API很“迷人”——新的Fetch API
原文:https://hacks.mozilla.org/2015/03/this-api-is-so-fetching 原标题是This API is So Fetching,Fetching也可以 ...
- fetch API
一.什么是fetch? fetch的作用类似于XMLHttpRequet的作用,用于异步请求网络,其提供的API更加的完善. fetch提供了Request和Response对象的定义,用于自定义网络 ...
- 原生http请求封装
满血复活,今天开始开始更新博客.随着es6的普遍应用,promise属性也随之用之普遍,我们在一些项目中,为了避免引入一些http库,节省空间,就简单将原生http请求做了封装处理,封装代码如下:(其 ...
- JS Fetch
使用Fetch 1.进行 fetch 请求 一个基本的 fetch请求设置起来很简单.看看下面的代码: fetch('http://example.com/movies.json') .then(fu ...
- fetch API 简单解读
http://f2e.souche.com/blog/fetch-api-jie-du/?utm_source=tuicool&utm_medium=referral 在我们日常的前端开发中, ...
- 使用 fetch 代替 ajax(在不支持的浏览器上使用 XHR); This kind of functionality was previously achieved using XMLHttpRequest.
原生 JS Ajax,GET和POST 请求实例代码_javascript技巧_脚本之家 https://www.jb51.net/article/86157.htm 更新时间:2016年06月08日 ...
- 关于 FormData 和 URLSearchParams
一.FormData FormData 接口提供了一种表示表单数据的键值对的构造方式,经过它的数据可以使用 XMLHttpRequest.send() 方法送出,本接口和此方法都相当简单直接.如果送出 ...
- 使用axios请求数据,post请求出错。因为axios传递的请求参数是json格式,而后端接口要求是formData
解决办法1:(IOS兼容性有问题,不推荐使用) // json格式转为formData格式,因为某些接口的原因 function json2formData(jsonData) { var param ...
随机推荐
- 使用Python批量更新服务器文件【新手必学】
买了个Linux服务器,Centos系统,装了个宝塔搭建了10个网站,比如有时候要在某个文件上加点代码,就要依次去10个文件改动,虽然宝塔是可视化页面操作,不需要用命令,但是也麻烦,虽然还有git的h ...
- 在视觉可视化中如何使用ScaleBreaks-比例中断
从lightningChart V8开始,这项图表控件产品开始支持X轴的Scale break功能. 这个功能的主要作用是排除选定的X轴范围,例如互动交易时间/日期或者机器停产时间等.如果有一部分的数 ...
- JS DOM用不同方法获取节点及对节点插入、复制和移除
操作节点的方法 appendChild() insertBefore() replaceChild() cloneNode() normalize() splitText() sppendChild( ...
- LaTex安装介绍
写在前面 很多的会议.期刊要求投稿使用LaTex编辑,而不是Word,使用好LaTex后,论文的排版任务确实会变得轻松. 1.下载软件 LaTex有很多衍生版,常用的推荐是Tex live,安装方式选 ...
- RHEL6 yum本地源配置
RHEL6 yum本地源配置 将RHEL6 的iso上传到/file1/xxx 新建目录/file1/xxx/mnt,将iso挂载到mnt目录 mount rhel-server-6.3-x86_64 ...
- Python爬虫连载9-JS加密之“盐”、ajax请求
一.JS加密之“盐” 1.salt属性“盐":多用于密码学,比如我们的银行卡是六位密码,但是实际上在银行的系统里,我们输入密码后,会给原始的密码添加若干字符,形成更加难以破解的密码.这个过 ...
- 剑指offer-面试题38-字符串的排列-全排列
/* 题目: 输入字符串,打印字符串的所有排列. 输入acc,输出[acc, cac, cca]. */ /* 思路: 将字符串看作两部分,第一个字符串和后面的部分. 将第一个字符串与后面字符串依次交 ...
- mybatis中用到的9种设计模式
1.Builder模式:例如SqlSessionFactoryBuilder.XMLConfigBuilder.XMLMapperBuilder.XMLStatementBuilder.CacheBu ...
- C# VS2017 WinForm 打包和升级
C# WinFrom打包不怎么常用,但一年总有那么一两次,每次都记不全,为了方便自己回看,于是有了本篇文章. 本例使用<C#工具类LogHelper>的解决方案作为例子,实现WinForm ...
- JavaSE学习笔记(6)---异常
JavaSE学习笔记(6)---异常 软件程序在运行过程中,非常可能遇到问题,我们称之为异常,英文是:Exception,意思是例外.遇到这些例外情况,或者叫异常,我们怎么让写的程序做出合理的处理 ...