首页 教程 Web前端 URLSearchParams解析url地址栏参数

URLSearchParams解析url地址栏参数

文章目录

  • 一、参考资料
  • 二、问题说明
  • 三、URLSearchParams介绍
    • 3.1 URLSearchParams的来历
    • 3.2 URLSearchParams的作用
    • 3.3 快速入门
    • 3.4 URLSearchParams的方法和属性
  • 四、使用示例(解析url地址)
    • 4.1 获取和解析URL参数
    • 4.2 构建和更新URL参数
  • 五、注意事项

一、参考资料

  1. MDN Web 文档:URLSearchParams
  2. Axios qs库(post传递JSON对象和get请求URL参数的相互转换工具)

二、问题说明

以前经常会使用 axios 库中的 “qs库”,参考 Axios qs库(post传递JSON对象和get请求URL参数的相互转换工具)

无意中发现同事写的代码中使用了URLSearchParams类,因此作为笔记学习

三、URLSearchParams介绍

3.1 URLSearchParams的来历

在过去,处理URL查询参数是一项相对繁琐的任务。开发人员需要手动解析URL,提取查询字符串部分,并对其进行分割和解码。这个过程涉及到很多繁琐的字符串操作和编码解码步骤,容易出错且代码冗长。为了简化这一过程, ECMAScript 2015(ES6)引入了URLSearchParams API。

3.2 URLSearchParams的作用

URLSearchParams的主要作用是对URL中的查询参数进行解析、访问和操作。它提供了一系列的方法,可以方便地执行以下操作:

解析URL查询参数: URLSearchParams可以接收一个URL查询字符串作为输入,并将其解析为一个可操作的对象。它自动处理编码和解码,将查询参数解析为键值对的形式,方便后续的操作。

访问查询参数: 通过URLSearchParams提供的方法,可以轻松地访问和获取URL中的查询参数。开发人员可以根据参数名称获取对应的值,或者获取所有参数的迭代器,实现灵活的参数访问。

添加和修改查询参数: URLSearchParams允许开发人员动态地添加、修改或删除URL中的查询参数。它提供了一组方法,如append()、set()和delete(),使得对查询参数的修改变得简单明了。

生成查询参数: URLSearchParams不仅可以解析查询参数,还可以将其转换回URL查询字符串的形式。它提供了toString()方法,可以将当前的查询参数对象序列化为标准的URL查询字符串,方便用于URL构建或发送请求等场景。

3.3 快速入门

const paramsString ="q=URLUtils.searchParams&topic=api";const searchParams =newURLSearchParams(paramsString);// 迭代查询参数for(let p of searchParams){ console.log(p);} console.log(searchParams.has("topic"));// true console.log(searchParams.has("topic","fish"));// false console.log(searchParams.get("topic")==="api");// true console.log(searchParams.getAll("topic"));// ["api"] console.log(searchParams.get("foo")===null);// true console.log(searchParams.append("topic","webdev")); console.log(searchParams.toString());// "q=URLUtils.searchParams&topic=api&topic=webdev" console.log(searchParams.set("topic","More webdev")); console.log(searchParams.toString());// "q=URLUtils.searchParams&topic=More+webdev" console.log(searchParams.delete("topic")); console.log(searchParams.toString());// "q=URLUtils.searchParams"

3.4 URLSearchParams的方法和属性

URLSearchParams提供了一系列方法和属性,用于解析、访问和操作URL中的查询参数。本节将详细介绍URLSearchParams的主要方法和属性,并提供相关的代码示例。

get(name)
作用:根据参数名称获取对应的值。

const params =newURLSearchParams('?name=John&age=30');const name = params.get('name'); console.log(name);// 输出:John

getAll(name)
作用:根据参数名称获取对应的值数组。

const params =newURLSearchParams('?name=John&age=30&name=Alice');const names = params.getAll('name'); console.log(names);// 输出:['John', 'Alice']

has(name)
作用:判断是否存在指定名称的参数。

const params =newURLSearchParams('?name=John&age=30'); console.log(params.has('name'));// 输出:true console.log(params.has('gender'));// 输出:false

append(name, value)
作用:向URL中添加新的参数。

const params =newURLSearchParams('?name=John'); params.append('age','30'); console.log(params.toString());// 输出:'name=John&age=30'

set(name, value)
作用:设置指定参数的值,如果参数不存在则添加新参数。

const params = new URLSearchParams('?name=John'); params.set('name', 'Alice'); params.set('age', '30'); console.log(params.toString()); // 输出:'name=Alice&age=30'

delete(name)
作用:删除指定名称的参数。

const params =newURLSearchParams('?name=John&age=30'); params.delete('age'); console.log(params.toString());// 输出:'name=John'

keys()
作用:返回一个迭代器,用于遍历所有参数的名称。

const params =newURLSearchParams('?name=John&age=30');for(const key of params.keys()){ console.log(key);// 输出:'name', 'age'}

values()
作用:返回一个迭代器,用于遍历所有参数的值。

const params =newURLSearchParams('?name=John&age=30');for(const value of params.values()){ console.log(value);// 输出:'John', '30'}

entries()
作用:返回一个迭代器,用于遍历所有参数的键值对。

const params =newURLSearchParams('?name=John&age=30');for(const[key, value]of params.entries()){ console.log(`${key}: ${value}`);// 输出:'name: John', 'age: 30'}

toString()
作用:将URLSearchParams对象转换为字符串表示形式。

const params =newURLSearchParams('?name=John&age=30');const paramString = params.toString(); console.log(paramString);// 输出:'name=John&age=30'

四、使用示例(解析url地址)

4.1 获取和解析URL参数

在Web开发中,经常需要获取URL中的参数值进行后续处理。URLSearchParams提供了简单而强大的方法来获取和解析URL参数。下面是一个示例,演示如何使用URLSearchParams获取和解析URL中的参数。

假设当前URL为:http://test.com/?name=John&age=25&gender=male

// 创建URLSearchParams对象const params =newURLSearchParams(window.location.search);// 获取参数值const name = params.get('name');// "John"const age = params.get('age');// "25"const gender = params.get('gender');// "male"// 输出参数值 console.log(`Name: ${name}`); console.log(`Age: ${age}`); console.log(`Gender: ${gender}`);

在上述示例中,通过window.location.search获取当前URL的查询参数部分,并使用URLSearchParams对象解析该参数。通过调用get()方法,可以根据参数名获取对应的值。这样,我们可以轻松地获取URL中的参数值,方便后续的处理和展示。

4.2 构建和更新URL参数

除了获取和解析URL参数,URLSearchParams还提供了方便的方法来构建和更新URL参数。下面是一个示例,演示如何使用URLSearchParams来构建和更新URL参数。

// 创建URLSearchParams对象const params =newURLSearchParams();// 设置参数 params.set('name','John'); params.set('age','25');// 追加参数 params.append('gender','male'); params.append('hobby','reading');// 获取参数字符串const queryString = params.toString();// "name=John&age=25&gender=male&hobby=reading"// 构建URLconst url =`http://test.com/?${queryString}`; console.log(url);

五、注意事项

在使用URLSearchParams时,有几个注意事项需要我们注意:

浏览器兼容性
URLSearchParams是一个相对较新的Web API,在旧版本的浏览器中可能不被支持。在使用URLSearchParams之前,要确保目标浏览器的兼容性。如果需要在旧版浏览器中使用,可以考虑使用替代方案。

URL参数格式
URLSearchParams期望的URL参数格式是key=value,多个参数之间使用&分隔。在使用URLSearchParams之前,要确保URL参数的格式是正确的,否则可能导致解析错误或获取参数值失败。

参数值编码
URLSearchParams会自动对参数值进行编码,以确保URL的正确性和安全性。但在某些情况下,如果参数值已经被编码,使用URLSearchParams可能会导致重复编码或编码错误的问题。在这种情况下,我们可以手动对参数值进行编码或解码,以避免问题的发生。

评论(0)条

提示:请勿发布广告垃圾评论,否则封号处理!!

    猜你喜欢
    【MySQL】用户管理

    【MySQL】用户管理

     服务器/数据库  2个月前  2.18k

    我们推荐使用普通用户对数据的访问。而root作为管理员可以对普通用户对应的权限进行设置和管理。如给张三和李四这样的普通用户权限设定后。就只能操作给你权限的库了。

    Cursor Rules 让开发效率变成10倍速

    Cursor Rules 让开发效率变成10倍速

     服务器/数据库  2个月前  1.24k

    在AI与编程的交汇点上,awesome-cursorrules项目犹如一座灯塔,指引着开发者们驶向更高效、更智能的编程未来。无论你是经验丰富的老手,还是刚入行的新人,这个项目都能为你的编程之旅增添一抹亮色。这些规则文件就像是你私人定制的AI助手,能够根据你的项目需求和个人偏好,精确地调教AI的行为。突然间,你会发现AI不仅能理解Next.js的最佳实践,还能自动应用TypeScript的类型检查,甚至主动提供Tailwind CSS的类名建议。探索新的应用场景,推动AI辅助编程的边界。

    探索Django 5: 从零开始,打造你的第一个Web应用

    探索Django 5: 从零开始,打造你的第一个Web应用

     服务器/数据库  2个月前  1.16k

    Django 是一个开放源代码的 Web 应用程序框架,由 Python 写成。它遵循 MVT(Model-View-Template)的设计模式,旨在帮助开发者高效地构建复杂且功能丰富的 Web 应用程序。随着每个版本的升级,Django 不断演变,提供更多功能和改进,让开发变得更加便捷。《Django 5 Web应用开发实战》集Django架站基础、项目实践、开发经验于一体,是一本从零基础到精通Django Web企业级开发技术的实战指南《Django 5 Web应用开发实战》内容以。

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

    MySQL 的mysql_secure_installation安全脚本执行过程介绍

     服务器/数据库  2个月前  1.09k

    mysql_secure_installation 是 MySQL 提供的一个安全脚本,用于提高数据库服务器的安全性

    【MySQL基础篇】概述及SQL指令:DDL及DML

    【MySQL基础篇】概述及SQL指令:DDL及DML

     服务器/数据库  2个月前  491

    数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库不仅仅是数据的简单堆积,而是遵循一定的规则和模式进行组织和管理的。数据库中的数据可以包括文本、数字、图像、音频等各种类型的信息。

    Redis中的哨兵(Sentinel)

    Redis中的哨兵(Sentinel)

     服务器/数据库  2个月前  316

    ​ 上篇文章我们讲述了Redis中的主从复制(Redis分布式系统中的主从复制-CSDN博客),本篇文章针对主从复制中的问题引出Redis中的哨兵,希望本篇文章会对你有所帮助。