在没有页面加载的情况下将 cookie 数据发送到服务器

send cookie data to server without page load

我将用户对问题(多项选择)的回答存储在 cookie 中。服务器仅在用户尝试 20 个问题后才从 cookie 中提取数据。 问题是当用户只尝试说 10 个问题并离开网站时。 cookie 中的响应对服务器不可用。 该要求不允许我从每个页面加载中提取 cookie 数据。 我正在考虑在 cookie 过期时间之前触发页面加载,以便那些额外的数据可以与服务器同步。但找不到任何解决方案。

感谢有关此问题的任何指示

例子:有500页,都是选择题。 当用户尝试第一个问题时,答案会记录在 cookie 中。 第二页/第二个问题/下一页加载。服务器查看 cookie ...什么都不做,因为它只有一条记录。 下一个问题...再次将用户响应保存在 cookie 中。服务器在找到 20 条记录之前什么都不做(20 条记录的指示符由标志刷新给出,如果是,服务器提取所有 20 records/question 的 cookie 数据并更新数据库,然后清除 cookie 并再次等待提取前20条记录。 现在,如果用户解决了记录在 cookie 中的 10 个下一个问题并离开了站点,那么这 10 个额外的问题将丢失,因为服务器直到最后一个页面加载才提取它们。

谢谢, 潘卡吉

如果您要问,"How do I trigger an event when a session cookie expires?" 我认为您不能,除非浏览器公开一个特殊的 API 来这样做。 cookie 将在浏览器关闭时或在特定的 date/time 时过期——但您的脚本将在其特定的 window 关闭时停止 运行。

如果您不想更改您的服务器逻辑,或为您的用户提供明确的 "Save" 按钮,我建议您这样做:

  1. 添加一个beforeunloadevent处理程序,它向带有"flush"标志的服务器发送请求,表明用户正在离开页面和服务器应存储所有剩余数据。

  2. 如果用户要前进到另一个问题页面,请禁用该事件处理程序。

您如何实施 2. 取决于您的应用程序当前如何触发问题页面之间的转换。