0

パラメータの取得関数に問題があり、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"];

注意として、パラメータの順序を変更することはできません:(

4

2 に答える 2

0

これを変更できます:

elq = getUrlVars()["elq"];

これに:

 eng = getUrlVars()["eng"];

正しい「eng」パラメータ値を取得するため。また、呼び出しgetUrlVars()たら、読み取ることでその値を取得できます

vars.eng
于 2016-06-16T23:23:22.003 に答える
0

この関数は、www.test.com/reg ?engTrackid getUrlVars()=123&eng=456 などの標準に準拠した URL に対して適切に機能します。

www.test.com/ty?eng=rackid=456 などの「壊れた」URL の get パラメータを正しく読み取るには、その関数内の正規表現を変更する必要があります。

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 に答える