0

我有一个 get 参数函数的问题,我有 2 个参数engTrackideng. 这些参数会自动添加到我的 URL 链接中。我需要抓取eng参数,但它抓取engTrackId并破坏了它。

IEwww.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"];

请注意,我无法更改参数的顺序:(

4

2 回答 2

0

你可以改变这个:

elq = getUrlVars()["elq"];

对此:

 eng = getUrlVars()["eng"];

为了得到正确的“eng”参数值。此外,一旦你打电话getUrlVars(),你可以通过阅读获得它的价值

vars.eng
于 2016-06-16T23:23:22.003 回答
0

您的getUrlVars()函数适用于符合标准的 URL,例如 www.test.com/reg?engTrackid=123&eng=456。

要正确读取“损坏”URL(例如 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"}

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

于 2016-06-16T23:23:23.593 回答