Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在关闭网页之前发送请求_Javascript_Angularjs - Fatal编程技术网

Javascript 在关闭网页之前发送请求

Javascript 在关闭网页之前发送请求,javascript,angularjs,Javascript,Angularjs,我正在与angularjs开发一个电子商务网站。。每当用户从购物车添加、更改数量或删除产品时,都会更新产品的本地数组(我不会推送到服务器,因为这意味着会有很多请求),我会监听window.onbeforeuload将更改推送到服务器。它在我本地的机器上运行得很好。但当我在服务器上测试时,它并没有像预期的那样工作 还有别的办法吗?也许在离开页面之前先等一秒钟发送一个成功的请求,然后离开?或者每次更新购物车时我都必须推送更改 我还想将管理购物车留给服务器,这意味着我不能操纵cookies。因为在服务

我正在与angularjs开发一个电子商务网站。。每当用户从购物车添加、更改数量或删除产品时,都会更新产品的本地数组(我不会推送到服务器,因为这意味着会有很多请求),我会监听window.onbeforeuload将更改推送到服务器。它在我本地的机器上运行得很好。但当我在服务器上测试时,它并没有像预期的那样工作

还有别的办法吗?也许在离开页面之前先等一秒钟发送一个成功的请求,然后离开?或者每次更新购物车时我都必须推送更改


我还想将管理购物车留给服务器,这意味着我不能操纵cookies。因为在服务器上,我使用外部类来处理购物车,例如为每个商品创建加密的商品标识符。

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

  • 当用户修改购物车时,项目将使用javascript(无需请求)作为json数组保存在cookie中
  • 在每次请求之前,我检查Cookie中是否保存了项目,以执行以下操作: A.摧毁马车。 B检索并解码保存在cookies中的项目。 C将这些新项目插入空购物车。 D把这块饼干解开
  • 这种方法的好处是,没有任何开销请求将本地更改推送到服务器
    但是,在服务器上使用购物车将项目保存在不同的cookie中看起来很愚蠢,我可能会用自己的购物车类重构它,以共享相同的项目cookie….

    我也遇到了类似的问题。为了解决这个问题,我创建了一个系统,在离开之前等待客户回复,但老实说,我不知道这是否是我的请求无法到达的技术原因。但它确实解决了这个问题。我找到了一个解决方案,但每次用户试图离开页面时,它都会提示用户。你就是这样做的吗?