javascript - 在 Wordpress 中使用 Javascript/JQuery 从 URL 捕获查询字符串并放入站点 cookie
问题描述
希望有人可以提供帮助 :) 我有一个 Wordpress 网站,我们正在向该网站发送参考链接,例如... http://website.com/?ref=hotelname&loc=townname。我们需要在 URL 中获取这些查询,并使用 javascript 将它们放入站点的 cookie 中。然后使用 cookie 填充预订按钮,然后链接到外部自定义预订引擎,我们需要使用 js 传递查询,因为 php 无法与我们的缓存一起正常工作。我被推荐这篇文章,但不幸的是它似乎不起作用如何在 JavaScript 中获取查询字符串值?.
解决方案
你可以通过javascripts做到这一点。首先,您必须从 URL 获取查询字符串,然后必须使用它保存在 cookie 中document.cookie = name + "=" + (value || "") + expires + "; path=/";
<script type="text/javascript">
// self executing function here
(function() {
function getParameterByName(name, url = window.location.href) {
name = name.replace(/[\[\]]/g, '\\$&');
var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
function setCookie(name,value,days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days*24*60*60*1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/";
}
function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
document.cookie = name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}
// query string: ?ref=hotelname&loc=townname
var ref = getParameterByName('ref');
var loc = getParameterByName('loc');
if( ref !== null ){
setCookie( 'ref', ref, 365 );
}
if( loc !== null ){
setCookie( 'loc', loc, 365 );
}
})();
</script>
对于保存,cookie 信用转到设置 cookie 并使用 JavaScript 获取 cookie
要获取查询字符串信用,请参阅如何在 JavaScript 中获取查询字符串值?
测试和工作。
推荐阅读
- reactjs - 元素类型无效:需要一个字符串(用于内置组件)或 webpack 构建后的类/函数
- laravel - Laravel 通过不同的方法发送相同的通知
- string - 如何将字节从 rust 字符串中移出
- python - 从 mongo-db 中的最后一条记录中获取一列值
- flutter - 有什么方法可以在颤振中使用 zefyrEditor 中的验证属性和 onChanged 属性?
- r - 如何计算R中某段时间的最大平均值?
- c# - 用于检查多个纬度和经度值的正则表达式模式
- networking - 访问 google.com 时出现 ERR_CERT_COMMON_NAME_INVALID
- python - 无法使用超级用户帐户登录到管理站点,该帐户是使用控制台创建的 // Django
- string - 如何使用 PowerShell 脚本从 html 代码中提取多个字符串