获取 URL-Javascript 中的参数不适用于 urlencoded '&'
Get URL-Parameter in Javascript doesn't work with urlencoded '&'
我想从 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.substring(1))
上调用 decodeURIComponent
。
(即在它的 组件 上)
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 对您 link 的回答的评论中提到了这一点。
我想从 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.substring(1))
上调用 decodeURIComponent
。
(即在它的 组件 上)
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 对您 link 的回答的评论中提到了这一点。