Cookie 数据在离开主页后仅存储一个变量

Cookie Data only stores one variable after leaving home page

本文关键字:变量 一个 存储 数据 离开 主页 Cookie      更新时间:2023-09-26

我在这里遇到了问题。我正在转换创建变量的 cookie 字符串。主页 它在控制台中显示这两个变量。事情看起来不错。有一个 If 语句,我认为这是我的问题所在。离开主页后,仅存储mc_eid。我需要同时看到mc_eid和mc_cid。它们都显示在主页上,但是一旦我们更改链接,看起来只有mc_eid被存储。我很难弄清楚这一点。结帐时,我需要两个变量 ID。为什么一旦网址更改,它只会存储其中一个?

  // getParameterByName  
  function getParameterByName( name ){ 
  var regexS = "[''?&]"+name+"=([^&#]*)", 
  regex = new RegExp( regexS ), 
  results = regex.exec( window.location.search ); 
  if( results === null ){ 
  return null; 
  } else{ 
  return decodeURIComponent(results[1].replace(/'+/g, " ")); 
  } 
  } 
  // call Parameter values we are looking for
  var mc_emailId = getParameterByName('mc_eid'); 
  var mc_campaignId = getParameterByName('mc_cid'); 
  //if id's are present store in cookie
  if (mc_campaignId && mc_emailId) { 
  mccookie = "mc_eid=" + mc_emailId + "; mc_cid=" + mc_campaignId; 
  }else if (mc_campaignId) { 
  mccookie = "mc_cid=" + mc_campaignId; 
  }else if (mc_emailId) { 
  mccookie = "mc_eid=" + mc_emailId; 
  } 
  // add experation date set cookie
  if (typeof mccookie !== "undefined"){
    var days = 30; 
    var d = new Date(); 
    d.setTime(d.getTime() + (days*24*60*60*1000)); 
    var expires =";expires="+d.toUTCString(); 
    document.cookie = mccookie + expires + "; domain=.mydomainname.com; path=/";
  }

我只是不明白为什么不存储mc_cid。

您是正确的,该错误与以下方面有关:

mccookie = "mc_eid=" + mc_emailId + "; mc_cid=" + mc_campaignId; 

您需要单独设置 Cookie。像这样:

if (mc_campaignId) { 
  var mccookieCID = "mc_cid=" + mc_campaignId; 
}
if (mc_emailId) { 
  var mccookieEID = "mc_eid=" + mc_emailId; 
} 
// add experation date set cookies
if (typeof mccookieCID !== "undefined"){
    var days = 30; 
    var d = new Date(); 
    d.setTime(d.getTime() + (days*24*60*60*1000)); 
    var expires =";expires="+d.toUTCString(); 
    document.cookie = mccookieCID + expires + "; domain=.mydomainname.com; path=/";
}
if (typeof mccookieEID !== "undefined"){
    var days = 30; 
    var d = new Date(); 
    d.setTime(d.getTime() + (days*24*60*60*1000)); 
    var expires =";expires="+d.toUTCString(); 
    document.cookie = mccookieEID + expires + "; domain=.mydomainname.com; path=/";
}

将任何 cookie 值推送到数组中,然后遍历数组以设置它们可能会更有效。您也可以考虑使用 JavaScript Cookie API(如 JS Cookie)。但是要修复您的代码,您只需单独设置 cookie。