参数被破坏了

时间:2016-06-16 23:07:55

标签: javascript getparameter

我遇到了get参数函数的问题,我有2个参数engTrackideng。参数会自动添加到我的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"];

作为一个注释,我无法改变参数的顺序:(

2 个答案:

答案 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"}

如果可以,请尝试解决导致网址损坏的问题!