javascript - 用户关闭弹窗后如何申请优惠码?
问题描述
背景:
我有一个请求用户发送电子邮件的弹出窗口。如果他们完成电子邮件提交,我想在他们随后在结帐时购买时自动应用优惠券代码。
对于要应用的优惠券代码,所有用户所要做的就是访问/?coupon_code=xxxx
网址末尾的链接。
此代码在此处获得:通过 URL 获取优惠券代码并将其应用于 WooCommerce 结帐页面
问题:
如何/?coupon_code=xxxx
在用户关闭弹出窗口时添加?
我试过的:
我尝试使用此处提供的解决方案(更改 URL 而不刷新页面)。这是我插入的。
history.pushState(null, '', '/?coupon_code=xxxx');
虽然这适用于更改网址,但我发现优惠券代码未在结帐时应用。但是,如果我手动输入完整的网址并刷新页面,例如。www.test.com/?coupon_code=xxxx
,优惠券代码将在结帐时应用。
谢谢你。
解决方案
在这种情况下制作 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() 来完成。
推荐阅读
- html - 为什么我们需要在 css 中使用 -webkit?
- c# - 无法在 Hangfire 中安排超过 1 个作业
- matlab - 在 matlab 中声明一个我们不知道其大小的向量
- java - 如何在 Java 中发布这个 http 请求?
- ios - 内存管理 - CVPixelBuffer 到 UIImage,使用 CIImage 和 VTCreateCGImageFromCVPixelBuffer 的区别
- angular - 如何在另一个订阅中使用和维护多个订阅?
- javascript - Phaser.Scene:如何使“游戏”属性可用?
- android - 调用 notifyDataSetChanged() 时 RecyclerView 闪烁
- mysql - 如何解决 sql 错误“产品组合已多样化,在第一行包含一个非常成功的多品牌”
- http-live-streaming - 如何在 Ant Media Server 中使用 HLS?