如何用javascript获取参数中的空格()替换加号(+;)

如何用javascript获取参数中的空格()替换加号(+;),javascript,wordpress,replace,textfield,getparameter,Javascript,Wordpress,Replace,Textfield,Getparameter,我使用如下get参数将用户重定向到我的站点: www.example.com/?电子邮件=mail@mail.com&vorname=name1+name2 我使用javascript填充我的texfields(时事通讯订阅),如下所示: function getUrlVars() { var vars = {}; var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, fun

我使用如下get参数将用户重定向到我的站点: www.example.com/?电子邮件=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;
vornametxt = vornametxt.replace(/\+/g, " ");
与此类似,它可以正常工作,但如果GET参数包含加号,则参数“vornametx”包含加号。我想用空格替换名称中的加号,其工作原理如下:

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;
vornametxt = vornametxt.replace(/\+/g, " ");
这是我在关于堆栈溢出的旧问题中发现的,但它不起作用。 我做错了什么?我的wordpress站点是否可能不允许某些代码


我正在使用Wordpress和一个插件,该插件允许我将此javascript代码添加到我的网站页脚。

这些值是URI编码的,表示“空间”。要对其进行解码,请将
+
替换为空格,然后使用
decodeURIComponent
(处理已编码的任何其他字符)。我想它会出现在您的
getUrlParam
函数中,就在最后:

return decodeURIComponent(urlparameter.replace(/\+/g, " "));
实例:

(函数(){
变量窗口={
地点:{
href:“http://www.example.com/&email=mail@mail.com&vorname=name1+name2“
}
};
函数getUrlVars(){
var vars={};
var parts=window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,函数(m,键,值){
变量[键]=值;
});
返回变量;
}
函数getUrlParam(参数,默认值){
var urlparameter=defaultvalue;
if(window.location.href.indexOf(参数)>-1){
urlparameter=getUrlVars()[parameter];
}
返回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;
})();



这些值是URI编码的,
+
表示“空格”。要对其进行解码,请将
+
替换为空格,然后使用
decodeURIComponent
(处理已编码的任何其他字符)。我想它会出现在您的
getUrlParam
函数中,就在最后:

return decodeURIComponent(urlparameter.replace(/\+/g, " "));
实例:

(函数(){
变量窗口={
地点:{
href:“http://www.example.com/&email=mail@mail.com&vorname=name1+name2“
}
};
函数getUrlVars(){
var vars={};
var parts=window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,函数(m,键,值){
变量[键]=值;
});
返回变量;
}
函数getUrlParam(参数,默认值){
var urlparameter=defaultvalue;
if(window.location.href.indexOf(参数)>-1){
urlparameter=getUrlVars()[parameter];
}
返回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;
})();



您将替换为空字符串而不是空格。谢谢,我已将其修复。遗憾的是,这并不是问题所在。您正在用一个空字符串代替空格。谢谢,我已经修复了它。遗憾的是,这不是问题所在。