1

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

4

4 回答 4

2

您可以使用 Ajax 请求,但请确保将其设为同步请求而不是异步请求。或者,只要用户进行更改,只需保存状态,如果用户的浏览器崩溃,这也可以保护数据。

于 2008-09-16T15:07:52.680 回答
1

上面有一个答案说使用同步 ajax 调用,这是最好的情况。问题是卸载并非在任何地方都有效。如果你看这里,你会发现一些技巧来帮助你在 safari 中卸载事件......你也可以使用 Google Gears 来保存用户端的内容,以备不时之需,但这是唯一完全安全的保留方式只要用户在页面上或进行更改,该信息就会持续发送。

于 2008-09-16T19:41:21.960 回答
0

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

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

于 2008-09-16T15:16:29.960 回答
0

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

于 2008-09-16T15:29:39.600 回答