将cookie数据发送到服务器而不加载页面

时间:2016-07-16 04:52:03

标签: javascript cookies setcookie

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

欣赏有关此问题的任何指示

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

谢谢, Pankaj

1 个答案:

答案 0 :(得分:0)

如果您要问,"如何在会话cookie到期时触发事件?"除非浏览器公开了一个特殊的API,否则我认为你无法做到。 cookie将在浏览器关闭时或在特定日期/时间到期,但是当特定窗口关闭时,脚本将停止运行。

如果您不想更改服务器逻辑,或者向用户明确提供"保存"按钮,我建议:

  1. 添加beforeunload event处理程序,使用" flush"向服务器发送请求。 flag,表示用户正在离开页面,服务器应存储所有剩余数据。

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

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