如何用 javascript 将 GET 参数中的加号 (+) 替换为空格 ( )
How to replace plus (+) signs with spaces ( ) in GET parameters with javascript
我使用如下 GET 参数将用户重定向到我的站点:
www.example.com/?email=mail@mail.com&vorname=name1+name2
我使用 javascript 填充我的 texfields(时事通讯订阅),如下所示:
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
function getUrlParam(parameter, defaultvalue){
var urlparameter = defaultvalue;
if(window.location.href.indexOf(parameter) > -1){
urlparameter = getUrlVars()[parameter];
}
return urlparameter;
}
var vornametxt = getUrlParam('vorname','');
var emailtxt = getUrlParam('email','');
document.querySelector("input[name=nn]").value = vornametxt;
document.querySelector("input[name=ne]").value = emailtxt;
像这样它可以正常工作,但如果 GET 参数包含加号,则参数 "vornametxt" 包含加号。我想用空格替换名称中的加号,应该像这样工作:
vornametxt = vornametxt.replace(/\+/g, " ");
这是我在有关堆栈溢出的较早问题中发现的内容,但它不起作用。
我究竟做错了什么?有没有可能是我的 wordpress 网站不允许某些代码?
我正在使用 Wordpress 和一个插件,它允许我将此 javascript 代码添加到我的网站页脚。
这些值是用 +
表示 "space" 的 URI 编码的。要解码它们,请将 +
替换为 space,然后使用 decodeURIComponent
(以处理任何其他已编码的字符)。我认为它会进入你的 getUrlParam
函数,就在最后:
return decodeURIComponent(urlparameter.replace(/\+/g, " "));
实例:
(function() {
var window = {
location: {
href: "http://www.example.com/&email=mail@mail.com&vorname=name1+name2"
}
};
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value) {
vars[key] = value;
});
return vars;
}
function getUrlParam(parameter, defaultvalue){
var urlparameter = defaultvalue;
if (window.location.href.indexOf(parameter) > -1) {
urlparameter = getUrlVars()[parameter];
}
return decodeURIComponent(urlparameter.replace(/\+/g, " "));
}
var vornametxt = getUrlParam('vorname','');
var emailtxt = getUrlParam('email','');
document.querySelector("input[name=nn]").value = vornametxt;
document.querySelector("input[name=ne]").value = emailtxt;
})();
<input type="text" name="nn">
<br><input type="text" name="ne">
我使用如下 GET 参数将用户重定向到我的站点: www.example.com/?email=mail@mail.com&vorname=name1+name2
我使用 javascript 填充我的 texfields(时事通讯订阅),如下所示:
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}
function getUrlParam(parameter, defaultvalue){
var urlparameter = defaultvalue;
if(window.location.href.indexOf(parameter) > -1){
urlparameter = getUrlVars()[parameter];
}
return urlparameter;
}
var vornametxt = getUrlParam('vorname','');
var emailtxt = getUrlParam('email','');
document.querySelector("input[name=nn]").value = vornametxt;
document.querySelector("input[name=ne]").value = emailtxt;
像这样它可以正常工作,但如果 GET 参数包含加号,则参数 "vornametxt" 包含加号。我想用空格替换名称中的加号,应该像这样工作:
vornametxt = vornametxt.replace(/\+/g, " ");
这是我在有关堆栈溢出的较早问题中发现的内容,但它不起作用。 我究竟做错了什么?有没有可能是我的 wordpress 网站不允许某些代码?
我正在使用 Wordpress 和一个插件,它允许我将此 javascript 代码添加到我的网站页脚。
这些值是用 +
表示 "space" 的 URI 编码的。要解码它们,请将 +
替换为 space,然后使用 decodeURIComponent
(以处理任何其他已编码的字符)。我认为它会进入你的 getUrlParam
函数,就在最后:
return decodeURIComponent(urlparameter.replace(/\+/g, " "));
实例:
(function() {
var window = {
location: {
href: "http://www.example.com/&email=mail@mail.com&vorname=name1+name2"
}
};
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value) {
vars[key] = value;
});
return vars;
}
function getUrlParam(parameter, defaultvalue){
var urlparameter = defaultvalue;
if (window.location.href.indexOf(parameter) > -1) {
urlparameter = getUrlVars()[parameter];
}
return decodeURIComponent(urlparameter.replace(/\+/g, " "));
}
var vornametxt = getUrlParam('vorname','');
var emailtxt = getUrlParam('email','');
document.querySelector("input[name=nn]").value = vornametxt;
document.querySelector("input[name=ne]").value = emailtxt;
})();
<input type="text" name="nn">
<br><input type="text" name="ne">