javascript - 在 Javascript 中获取 URL 参数不适用于 urlencoded '&'

标签 javascript jquery url-encoding

我想从 Javascript 的 URL 中读取一个获取参数。我找到了 this

var getUrlParameter = function getUrlParameter(sParam) {
    var sPageURL = decodeURIComponent(window.location.search.substring(1)),
        sURLVariables = sPageURL.split('&'),
        sParameterName,
        i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');

        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true : sParameterName[1];
        }
    }
};

问题是,我的参数是这样的:

iFZycPLh%Kf27ljF5Hkzp1cEAVR%oUL3$Mce&@XFcdHBb*CRyKkAufgVc32!hUni

我已经制作了 urlEncode,所以它是这样的:

iFZycPLh%25Kf27ljF5Hkzp1cEAVR%25oUL3%24Mce%26%40XFcdHBb*CRyKkAufgVc32!hUni

但是,如果我调用 getUrlParameter() 函数,我只会得到这样的结果:

iFZycPLh%Kf27ljF5Hkzp1cEAVR%oUL3$Mce

有谁知道我该如何解决这个问题?

最佳答案

您需要在 sParameterName[0]sParameterName[1] 上调用 decodeURIComponent,而不是在整个 search 上调用。子串(1)).

(即在它的组件上)

var getUrlParameter = function getUrlParameter(sParam) {
    var sPageURL = window.location.search.substring(1),
        sURLVariables = sPageURL.split('&'),
        sParameterName,
        i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');

        var key = decodeURIComponent(sParameterName[0]);
        var value = decodeURIComponent(sParameterName[1]);

        if (key === sParam) {
            return value === undefined ? true : value;
        }
    }
};

zakinster 对您链接到的答案的评论中提到了这一点。

关于javascript - 在 Javascript 中获取 URL 参数不适用于 urlencoded '&',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36870112/

相关文章:

javascript - $.ajax 后置函数安全性

jquery - 悬停在图像上时显示下拉菜单

python - 如何使请求不解码我的网址中的转义百分比?

c# - 在 URL 中发送之前特殊字符的百分比编码

javascript - 检查第一个复选框是否被单击

javascript - Java 11 中的 Nashorn 在评估命名函数时的行为与 Java 8 不同

javascript - 查找最后一次出现的文本

javascript - Play 后端和 JavaScript 客户端之间的编码/解码 URL

javascript - 如何在 react js中保留浏览器后退按钮上应用的过滤器

javascript - 单击“标记点 Forge”