You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将脚本变量传入HTML并解决URL参数%20编码问题?

解决URL参数获取与%20编码问题

嗨,很高兴看到你已经成功把参数传递到新页面了!咱们来一步步解决你遇到的两个问题:

1. 为啥会出现%20?

%20其实是空格字符的URL编码形式——因为URL规范里不允许直接出现空格,浏览器会自动把空格转换成%20来保证URL合法。比如你传递的名称是Martin Garcia,就会被转成Martin%20Garcia。

2. 正确获取并解码参数的方法

你的getUrlVars函数已经能拿到参数值,但缺少了解码步骤。只需要用decodeURIComponent()函数,就能把编码后的字符串还原成正常文本。

修改你的函数如下:

function getUrlVars() {
    var vars = [], hash;
    // 先判断URL里有没有参数,避免找不到?时报错
    if (window.location.href.indexOf('?') === -1) return vars;
    
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++){
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        // 对参数值进行解码,去除%20这类编码
        vars[hash[0]] = decodeURIComponent(hash[1]);
    }
    return vars;
}

这样再调用volar()函数获取参数时,%20就会自动转换成正常的空格啦。

3. 优化跳转时的参数拼接(重要!)

另外,你跳转页面的代码里有个小问题:URL参数的起始符号是?,你原来的代码写的是"Acerca.html proced=...",少了?,这会导致参数解析异常。同时,规范的做法是用encodeURIComponent()对参数值提前编码,避免特殊字符(比如空格、中文)引发的问题:

// 修正跳转代码
location.href = "Acerca.html?proced="+encodeURIComponent(Nombres)+"&proce="+encodeURIComponent(Cedula);

测试验证

修改完之后,刷新页面调用volar(),你页面上的sirve元素就能显示正常的名称,不会再出现奇怪的%20了!

内容的提问来源于stack exchange,提问作者Caanphobia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:37:46