首页 > 解决方案 > 用户关闭弹窗后如何申请优惠码?

问题描述

背景:

我有一个请求用户发送电子邮件的弹出窗口。如果他们完成电子邮件提交,我想在他们随后在结帐时购买时自动应用优惠券代码。

对于要应用的优惠券代码,所有用户所要做的就是访问/?coupon_code=xxxx网址末尾的链接。

此代码在此处获得:通过 URL 获取优惠券代码并将其应用于 WooCommerce 结帐页面

问题:

如何/?coupon_code=xxxx在用户关闭弹出窗口时添加?

我试过的:

我尝试使用此处提供的解决方案(更改 URL 而不刷新页面)。这是我插入的。

history.pushState(null, '', '/?coupon_code=xxxx');

虽然这适用于更改网址,但我发现优惠券代码未在结帐时应用。但是,如果我手动输入完整的网址并刷新页面,例如。www.test.com/?coupon_code=xxxx,优惠券代码将在结帐时应用。

谢谢你。

标签: javascriptwoocommerce

解决方案


在这种情况下制作 AJAX/fetch 请求会起作用吗?我不完全确定我理解这个问题,但也许你可以尝试:


let onClose = async () => {
    let response = await fetch(‘/?coupon_code=xxxx’);
    let data = await response.json();
    return data; //returns the result of your request to the coupon code URL
}

希望这可以帮助!

编辑:解释为什么这样做

当您更改历史状态时,受影响的只是浏览器的本地状态。要应用优惠券代码,您实际上需要向您提供的 URL 发出 http 请求,这就是 fetch API 所做的。它是异步的,这就是我们使用 async/await 的原因。如果您愿意,也可以通过链接 .then() 来完成。


推荐阅读