需要使 url 查询字符串在链接中持久存在

jos*_*new 5 html javascript query-string

所以,我发现了这个类似的请求,但发帖者回答了自己并详细说明了:

整个站点的持久 URL 查询字符串?

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

https://www.example.com/reg/newreg.php?eventid=89335&discountcode=code

需要注意的是,系统仅在将人员直接链接到注册过程时才允许这样做,如上所示。由于没有人想在没有看到活动详细信息的情况下购买门票,因此这几乎毫无用处。主页地址的形式为:

https://www.example.com/home/89335

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

关于如何处理这个问题有什么建议吗?

谢谢!

小智 3

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

\n\n

如果你可以使用 jQuery,你可以这样做(完全未经测试,所以这不能直接工作,但你应该找到解决方案:))

\n\n

要获取 url 参数,您可以使用此处的解决方案:/sf/answers/361081101/

\n\n
function getParameterByName(name) {\n    var match = RegExp(\'[?&]\' + name + \'=([^&]*)\').exec(window.location.search);\n    return match && decodeURIComponent(match[1].replace(/\\+/g, \' \'));\n}\n\njQuery(document).ready(function ($) {\n  var persistedQueryParam = getParameterByName(\'discountcode\');\n\n  if (persistedQueryParam && persistedQueryParam.length > 0) {\n    $(\'a[href]\').each(function () {\n      var elem = $(this);\n      var href = elem.attr(\'href\');\n      elem.attr(\'href\', href + (href.indexOf(\'?\') != -1 ? \'&\' : \'?\') + \'discountcode=\' + persistedQueryParam);\n    });\n  }\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

只需将“discountcode”字符串替换为您的真实参数名称即可。

\n\n

希望有帮助。

\n\n

最好的问候,\n克里斯

\n\n

更新:添加了查询字符串和 \'?\' / \'&\' 处理。

\n\n

更新 2:从 prop 更改为 attr。

\n\n

更新 3:名称从“param”更改为“discountcode”。

\n\n

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

\n