我遇到了get参数函数的问题,我有2个参数engTrackid
和eng
。参数会自动添加到我的URL链接中。我需要获取eng
参数,但它会抓取engTrackId
并将其分解。
即。 www.test.com/reg?engTrackid=123&eng=456
我的页面有一个注册页面,提交后,它应该将eng
值传递给TY页面,但它看起来像这样:
www.test.com/ty?eng=rackid=456
代替www.test.com/ty?eng=456
这是我使用的功能:
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(
/[?&]+([^=&]+)=([^&]*)/gi,
function(m,key,value) {
vars[key] = value;
}
);
return vars;
}
var elq = getUrlVars()["elq"];
作为一个注释,我无法改变参数的顺序:(
答案 0 :(得分:0)
你可以改变这个:
elq = getUrlVars()[“elq”];
到此:
eng = getUrlVars()["eng"];
以获得正确的“eng”参数值。一旦你致电getUrlVars()
,你就可以通过阅读
vars.eng
答案 1 :(得分:0)
您的getUrlVars()
功能适用于符合标准的网址,例如www.test.com/reg?engTrackid=123&eng=456。
要正确读取“损坏”网址的获取参数,例如www.test.com/ty?eng=rackid=456,您需要修改该函数中的正则表达式:
function getUrlVars(href) {
var vars = {};
href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value) {
vars[key] = value;
});
return vars;
}
function getBrokenUrlVars(href) {
var vars = {};
href.replace(/[?&]+([^=&]+)=(?:[^=&]*=)*([^&]*)/gi, function(m, key, value) {
vars[key] = value;
});
return vars;
}
href1 = "www.test.com/reg?engTrackid=123&eng=456";
href2 = "www.test.com/ty?eng=rackid=456";
console.log(getUrlVars(href1)); // {"engTrackid": "123", "eng": "456"}
console.log(getUrlVars(href2)); // {"eng": "rackid=456"}
console.log(getBrokenUrlVars(href1)); // {"engTrackid": "123", "eng": "456"}
console.log(getBrokenUrlVars(href2)); // {"eng": "456"}
如果可以,请尝试解决导致网址损坏的问题!