Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要使url查询字符串在链接中保持不变_Javascript_Html_Query String - Fatal编程技术网

Javascript 需要使url查询字符串在链接中保持不变

Javascript 需要使url查询字符串在链接中保持不变,javascript,html,query-string,Javascript,Html,Query String,因此,我发现了类似的要求,但海报回答了自己,并详细说明了: 基本上,我有一个事件管理网站,可以编辑html和javascript,但不能编辑php。我正试图设置通过一个链接传递折扣代码,用于会员跟踪。系统已允许以以下形式在查询中传递代码: 但是 需要注意的是,系统仅在将此人直接链接到注册过程时才允许这样做,如上所示。由于没有人会想在没有看到活动细节的情况下买票,这几乎是无用的。网页地址的格式如下: 但是,当我尝试向地址追加&discountcode=code时,在单击注册链接并转到注册页面

因此,我发现了类似的要求,但海报回答了自己,并详细说明了:

基本上,我有一个事件管理网站,可以编辑html和javascript,但不能编辑php。我正试图设置通过一个链接传递折扣代码,用于会员跟踪。系统已允许以以下形式在查询中传递代码:

但是

需要注意的是,系统仅在将此人直接链接到注册过程时才允许这样做,如上所示。由于没有人会想在没有看到活动细节的情况下买票,这几乎是无用的。网页地址的格式如下:

但是,当我尝试向地址追加&discountcode=code时,在单击注册链接并转到注册页面时,查询字符串丢失

对如何处理这个问题有什么建议吗


谢谢

您可以尝试解析所有包含a href的a标签,并使用javascript更新href

如果您可以使用jQuery,您可以这样做(完全未经测试,因此无法直接工作,但您应该找到解决方案:)

要获取url参数,可以使用以下解决方案:

只需将'discountcode'字符串替换为您的真实参数名

希望有帮助

致以最良好的祝愿, 克里斯

更新:添加了查询字符串和“?”/“&”处理

更新2:从道具更改为属性

更新3:从“参数”名称更改为“折扣代码”


Uüdate 4:添加了长度检查@persistedQueryParam,终于有机会测试脚本:)

嘿,克里斯,谢谢你的回答。我可以使用jquery,但我只知道一点点。有机会的时候你能澄清一下答案吗?我可以看到它看起来像是针对页面上的所有链接并添加persistedQueryParam,但我不确定首先如何为persistedQueryParam获取正确的值。此外,由于我只有几个需要这样做的链接,我可以按类来确定目标吗?类似于:$('a.persist-link')。每个(函数()?都已更新。是的,如果您可以通过使用css类缩小它的范围,那么您肯定应该这样做。您使用
.prop()
而不是
.attr()有什么原因吗
?前者通常用于属性,例如
选中的
选中的
选中的索引
标记名
节点名
节点类型
所有者文档
默认选中的
默认选中的
。你说得对,应该是attr.更改了co谢谢你的提示。
function getParameterByName(name) {
    var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

jQuery(document).ready(function ($) {
  var persistedQueryParam = getParameterByName('discountcode');

  if (persistedQueryParam && persistedQueryParam.length > 0) {
    $('a[href]').each(function () {
      var elem = $(this);
      var href = elem.attr('href');
      elem.attr('href', href + (href.indexOf('?') != -1 ? '&' : '?') + 'discountcode=' + persistedQueryParam);
    });
  }
});