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 ...
随机推荐
- .NET Core MVC 静态文件应用
一.静态文件应用方面 ASP.NET Core 静态文件应用,主要分为两方面:网站访问和静态文件整合 二.案例 1.访问静态文件 我们都知道,在 ASP.NET 项目中,我们的静态文件一般要放在 ww ...
- 源码浅析:MySQL一条insert操作,会写哪些文件?包括UNDO相关的文件吗?
DML操作的大致流程 在解答上述疑惑之前,我们来梳理一下DML操作的大致流程: 1.语法解析.语义解析 2.生成执行计划 3.事务修改阶段 1) 激活事务,事务状态由not_active变为activ ...
- vue搭建手顺
1.环境准备:node.js vue-cli: $ npm install vue-cli -g 2.建立项目目录:vuedemo,并cd到该目录下 3.$ vue init webpack vu ...
- Python 爬取必应壁纸
import re import os import requests from time import sleep headers = { "User-Agent": (&quo ...
- Python3标准库:queue线程安全的FIFO实现
1. queue线程安全的FIFO实现 queue模块提供了一个适用于多线程编程的先进先出(FIFO,first-in,first-out)数据结构,可以用来在生产者和消费者线程之间安全地传递消息或其 ...
- idea 普通项目 改成 maven项目
首先 pom.xml 是必要的 然后在该文件上右击 add as maven project
- LeetCode 面试题 02.03. 删除中间节点
题目链接:https://leetcode-cn.com/problems/delete-middle-node-lcci/ 实现一种算法,删除单向链表中间的某个节点(除了第一个和最后一个节点,不一定 ...
- Oracle命令行导入dmp文件
一.导入准备 使用impdp命令,需要在oracle数据库服务器操作: 使用sqlplus或者Oracle客户端(PL/SQL) 链接到相应的Oracle数据库实例,进行如下操作 1. 创建逻辑目录, ...
- visual studio2010编译过程中出现COFF文件损坏的原因和方法总结
一.现象描述 笔者在用visual studio2010进行控制台程序进行程序编译时候,经常会遇到代码代码没有语法错误,但是编译不通过的现象.系统报错为 LINK : fatal error LNK1 ...
- Function and Function
If we define , do you know what function means? Actually, calculates the total number of enclosed ...