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