代码之家  ›  专栏  ›  技术社区  ›  Richard Turner

如何在卸载时将一些JavaScript状态信息保存回我的服务器?

  •  1
  • Richard Turner  · 技术社区  · 16 年前

    我有一个 ExtJS 网格在网页上,我想在用户离开页面时将它的一些状态信息保存回服务器。 我可以在卸载时使用Ajax请求来执行此操作吗? 如果没有,更好的解决方案是什么?

    4 回复  |  直到 13 年前
        1
  •  2
  •   Jim os x nerd    16 年前

    您可以使用Ajax请求,但请确保它是同步请求,而不是异步请求。或者,每当用户进行更改时,只需保存状态,这也可以在用户的浏览器崩溃时保护数据。

        2
  •  1
  •   Douglas Mayle    16 年前

    上面有一个答案,说使用同步ajax调用,这是最好的情况。问题是卸载并不适用于所有地方。如果你看 here 你会发现一些技巧来帮助你在safari中卸载事件……你也可以使用Google Gears在用户回来的情况下保存用户端的内容,但保存这些信息的唯一完全安全的方法是,只要用户在页面上或进行更改,就可以持续发送。

        3
  •  0
  •   Adam Hopkinson    16 年前

    您还可以在卸载时使用javascript设置cookie。我认为ajax相对于Cookie的优势在于,您可以使用数据进行报告,用户(如果登录)可以在不同的机器上使用这些数据。

    使用ajax的缺点是它可能会减慢浏览器窗口的实际关闭速度,如果服务器响应缓慢,这可能会很烦人。

        4
  •  0
  •   Alexandre Victoor    16 年前

    这取决于用户如何离开页面。 如果您的GUI中有一个“注销”按钮,当用户单击此按钮时,您可以触发ajax请求。 否则,我认为在onUnload中提出请求不是一个好主意。如前所述,您必须发出同步请求。.. cookie解决方案的另一种选择是隐藏文本字段。这是一种通常由以下工具使用的技术 RSH 它处理ajax带来的历史问题。