在关闭网页之前发送请求

时间:2013-10-25 16:04:37

标签: javascript angularjs

我正在开发一个带有angularjs的电子商务网站。每当用户添加,更改数量或从购物车中删除产品时,本地产品阵列都会更新(我不会推送到服务器,因为这意味着很多请求)和我听了window.onbeforeunload将更改推送到服务器。它在我的本地机器上运行良好。但是,当我在服务器上测试它时,它没有按预期工作。

还有其他办法吗?也许在离开页面之前说等一下发送成功请求然后离开?或者我每次更新购物车时都必须进行更改..

我还想为服务器留下管理推车,这意味着我无法操纵cookie。因为在服务器上我正在使用处理购物车的外部类,例如为每个项目创建加密项目标识符。

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,不确定它是否是最佳实践,但在许多情况下进行测试后。它似乎工作得很好......

  1. 当用户修改购物车时,使用javascript(无需请求)将项目保存在cookie中作为json数组。
  2. 在每次请求之前,我会检查Cookie中是否有保存的项目以执行以下操作: 一个。摧毁购物车。 湾检索和保存在cookie中的json_decode项目。 C。将这些新物品插入空车。 d。取消设置此cookie。
  3. 这种方法的好处是,没有任何开销请求将本地更改推送到服务器 但是,使用服务器上的购物车保存不同cookie中的项目看起来很愚蠢,我可能会使用我自己的购物车类重构它以共享相同的项目cookie ....