三种获取URL参数值的方法

这篇具有很好参考价值的文章主要介绍了三种获取URL参数值的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在 URL 中,查询参数字符串值通常提供有关请求的信息,例如搜索参数或正在使用的对象的 ID。如果在前端处理任何业务或请求逻辑,了解如何从 URL 中检索查询字符串值非常重要。本文分享三种从 URL 获取参数的方法。

URLSearchParams

除 IE 11 之外的所有主要浏览器版本都支持该 URLSearchParams 接口。它通过解析 URL 的查询字符串并提供访问值的方法来工作。例如:

此接口的缺点之一是您必须仅将 URL 的查询字符串传递给它。如果您正在使用当前的浏览器 URL,这很容易做到,因为您只需通过 window.location.search。 如果您使用任何其他 URL,则需要单独解析并传递查询字符串。

const params = new URLSearchParams("q=devpoint&page=1");
params.get("q"); // 'devpoint'
params.get("page"); // '1'

要将查询参数解析为对象,请使用 URL.searchParams.entries()方法,该方法返回一个 Iterator key/value 对,并将Object.fromEntries其转换为对象。

const params = new URLSearchParams("q=devpoint&page=1");
const entries = params.entries();
Object.fromEntries(entries); // {q: 'devpoint', page: '1'}

以参数的方式传递数组值,参数名称可以是同一个,如下的参数 uid

const paramsString = "q=devpoint&uid=1&uid=3&uid=4";
const searchParams = new URLSearchParams(paramsString);

console.log(console.log(searchParams.getAll("uid"))); // [ '1', '3', '4' ]

URL

除了 IE 11 之外,所有主要浏览器版本也都支持 URL API。它提供了一种更灵活的 URL 解析方式,还提供了一种访问查询字符串值的方式。例如:

const url = new URL("https://stackabuse.com/search?q=devpoint&page=1");
const searchParams = url.searchParams;
searchParams.get("q"); // 'devpoint'
searchParams.get("page"); // '1'

url.searchParamsURLSearchParams 返回的实例对象类型相同。

上面的 url 对象也将 URL 的所有部分分解成各个部分。例如:

url.href; // 'https://stackabuse.com/search?q=devpoint&page=1'
url.origin; // 'https://stackabuse.com'
url.protocol; // 'https:'
url.host; // 'stackabuse.com'
url.hostname; // 'stackabuse.com'
url.port; // ''
url.pathname; // '/search'
url.search; // '?q=devpoint&page=2'
url.hash; // ''

纯JS

如果由于某种原因无法访问上述 API 或希望对解析有更多控制权,可以使用以下代码将查询字符串解析为对象。

function getQueryParams(url) {
    const paramArr = url.slice(url.indexOf("?") + 1).split("&");
    const params = {};
    paramArr.map((param) => {
        const [key, val] = param.split("=");
        params[key] = decodeURIComponent(val);
    });
    return params;
}

函数执行后的效果如下:文章来源地址https://www.toymoban.com/news/detail-594990.html

getQueryParams("https://stackabuse.com/search?q=devpoint&page=2"); // { q: 'devpoint', page: '2' }

到了这里,关于三种获取URL参数值的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 获取Layui iframe页面的url参数

    弹出layui iframe页面 iframe页面中获取参数

    2024年02月12日
    浏览(55)
  • Java获取URL地址中传递的参数

    一、 Java获取URL地址中传递的参数 二、获取请求的URL地址 三、获取请求的IP地址 四:判断字符串是否能够转换成指定格式的日期

    2024年02月16日
    浏览(41)
  • 前端如何获取网页的url

    1.设置或获取对象指定的文件名或路径: 获取整个 URL 为字符串(常用):window.location.href 2.获取与 URL 关联的端口号码:window.location.port eg:http://localhost:8088/#home?tenancyId=4bfaaa6d-410e-11ec-875a-00505685097e =8088 3.设置或获取 URL 的协议部分:window.location.protocol eg:http://localhost:8088/#home?tenancyId=

    2024年02月16日
    浏览(42)
  • js获取当前域名、Url、相对路径和参数

    由于获取到的当前域名不包括 http://,所以把获取到的域名赋给 a 标签的 href 时,别忘了加上 http://,否则单击链接时导航会出错。 浏览器地址栏显示的是什么,获取到的 url 就是什么。 首先获取 Url,然后把 Url 通过 // 截成两部分,再从后一部分中截取相对路径。如果截取到

    2024年02月16日
    浏览(52)
  • js下载url文件 —— 三种方法

    2024年02月14日
    浏览(49)
  • Nginx 获取自定义请求header头和URL参数

    在 ngx_lua 中访问 Nginx 内置变量 ngx.var.http_HEADER 即可获得请求头HEADER的内容。 在 nginx配置中,通过$http_HEADER 即可获得请求头HEADER的内容。 案例: 在nginx的location配置中,在获取header配置时, 须要在header名称前面加上固定前缀“http_“,并将header名称中的“-”中划线变为下划线

    2024年02月04日
    浏览(36)
  • 小程序Url Link跳转怎么获取query参数?

    我是通过这种方式接收参数的,如果想验证可以通过编译器模拟:

    2024年02月17日
    浏览(37)
  • 微信小程序页面跳转时URL获取不到参数

    原因: 在跳转的url参数中添加了包含特殊字符?的情况下 ,会出现参数丢失的情况 1.最近在小程序开发过程中,发现之前可用的某个功能字段展示为了undefined,后来查看参数发现 页面跳转时参数丢失了 导致的 此时获取到的参数都是正常的,在上线一段时间后,其它同学在 图

    2024年02月11日
    浏览(65)
  • keycloak~RequiredActionProvider中获取表单认证前URL的参数

    在keycloak中,我们在进行brower浏览器的表单认证时,一般在跳到本页面时,URL上会有redirect_uri这种参数,用来告诉keycloak,在认证成功后的跳转地址,你在表单认证控制器中,可以通过 context.getHttpRequest().getUri().getQueryParameters().getFirst(\\\"redirect_uri\\\") 进行获取,而当你为brower认证流

    2024年04月26日
    浏览(38)
  • vue 中从后端获取到文件的 url 地址,前端根据 url 地址下载文件

    项目用的是 vben admin 框架,用的是 vue3 + TS 项目需求数据导出功能,前端需要实现文件下载功能 后端返回的是文件的 url 地址 (本项目中返回的是阿里云 oss 的文件地址) 从后端得到的是一个 url 地址,先通过 fetch api 请求这个 url 地址并转换成 blob 对象,通过 URL.createObjectUrl() 将 blo

    2024年02月06日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包