我需要添加类似于 Gmail 的功能,其中在多个结果页面以及离开和返回结果时记住项目列表上的复选框。我想弄清楚的是最好的方法。我正在使用 PHP 和可能的 jQuery。
我的第一个想法是向每个复选框添加一个 onClick,触发 AJAX 回调到服务器,该服务器将 id 存储在会话中的数组中。每次加载项目列表时,系统都会检查该行是否被选中,并在必要时选中复选框。为了可靠性,在检查是否无法完成对服务器的请求(连接问题、服务器错误等)后,将取消选中该复选框,并且将尽可能快地发出请求。
这听起来不错,除了一些项目:
- 检查所有:会发生什么?它是否向服务器发送 30 个(默认页面项)请求?还是我删除所有的onClicks,选中复选框,向服务器发送带有所有ID的请求,然后重新添加onClicks?或者...?取消选中所有类似的问题。
- 速度:如果 100 多个用户一直在检查和取消检查,可能会出现问题
- 浏览器速度:我认为最好在页面加载后使用 JS 添加 onClick,如果一页上有 500 个或更多项目,我认为这可能需要一两秒。检查所有会成为一个更大的问题。
在过去,我还没有找到一种可靠的方法来检测用户何时离开页面。如果有可靠的方法,那么我可以看到这是一个选项,因此它只记录每个卸载页面。
还有其他解决方案或更好的方法吗?
编辑:正如Eran Galperin所提到的,检查所有方法只需要检查每个复选框,然后对所有行进行 ajax 调用。无需删除 onClick。
而且,看起来事件委托方法是一个好主意——会让事情变得更容易。