如何用javascript获取参数中的空格()替换加号(+;)
我使用如下get参数将用户重定向到我的站点: www.example.com/?电子邮件=mail@mail.com&vorname=name1+name2 我使用javascript填充我的texfields(时事通讯订阅),如下所示:如何用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
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;
})();代码>
您将替换为空字符串而不是空格。谢谢,我已将其修复。遗憾的是,这并不是问题所在。您正在用一个空字符串代替空格。谢谢,我已经修复了它。遗憾的是,这不是问题所在。