我需要添加與Gmail相似的功能,其中項目列表上的複選框會記錄在多頁結果中,以及何時離開並返回結果。我試圖弄清楚的是做到這一點的最佳方式。我使用PHP和可能的jQuery。記住跨頁面複選框 - 最好的方法是什麼?
我的第一個想法是添加一個onClick到每個複選框,觸發一個AJAX調用回服務器,該服務器將id存儲在會話中的數組中。每次加載項目列表時,系統都會檢查該行是否已被選中,並在必要時檢查複選框。爲了可靠性,在檢查對服務器的請求是否無法完成(連接問題,服務器錯誤等)之後,複選框將被取消選中,並且儘可能快地提出請求。
這聽起來都不錯,除了少數項目:
- 檢查所有:發生了什麼?它是否向服務器發送30個(默認頁面項目)請求?或者我刪除所有的onClicks,選中複選框,向所有ID發送請求到服務器,然後重新添加onClicks?要麼...?類似的問題全部取消選中。
- 速度:有可能開始出現問題,如果用戶的100S都檢查,並取消選中所有的時間
- 瀏覽器速度:我想這是最好的頁面加載後與JS添加的onClick,我敢如果一頁上有500個或更多項目,思考可能需要1秒鐘或2秒鐘。全部檢查會成爲一個更大的問題。
在過去,我還沒有找到一種可靠的方式來檢測用戶何時離開頁面。如果有可靠的方法,那麼我可以看到這是一個選項,因此它只是在每個頁面上記錄卸載。
有沒有其他解決方案或更好的方法?
編輯:如Eran Galperin所述,check all方法只需要檢查每個複選框,然後對所有行進行ajax調用。無需刪除onClick。
另外,它看起來像事件委託方法是一個好主意—會使事情變得更容易。
是的,我不喜歡每頁500個。默認值是30,但人們通常希望看到更多,以便可以在視覺上進行比較。在這個功能之前,他們需要檢查非常大的數量來對它們執行操作。 – 2008-12-14 07:00:21