Erinnern Sie sich an markierte Kontrollkästchen auf allen Seiten - wie geht das am besten?

Ich muss Funktionen hinzufügen, die denen von Google Mail ähneln, bei denen die Kontrollkästchen in einer Liste von Elementen auf mehreren Ergebnisseiten gespeichert werden und wenn Sie fortgehen und zum Ergebnis zurückkehren. Was ich herauszufinden versuche, ist der beste Weg, dies zu tun. Ich benutze PHP und wahrscheinlich jQuery.

Mein erster Gedanke ist, jedem Kontrollkästchen ein onClick hinzuzufügen, das einen AJAX-Rückruf an den Server auslöst, der die ID in einem Array in der Sitzung speichert. Jedes Mal, wenn eine Liste mit Elementen geladen wird, prüft das System, ob die Zeile markiert ist, und aktiviert gegebenenfalls das Kontrollkästchen. Aus Gründen der Zuverlässigkeit wird das Kontrollkästchen deaktiviert, nachdem überprüft wurde, ob die Anforderung an den Server nicht abgeschlossen werden kann (Verbindungsproblem, Serverfehler usw.), und die Anforderung wird so schnell wie möglich ausgeführt.

Das klingt alles gut, bis auf ein paar Punkte:

check all: was passiert Sendet es 30 Anfragen (Standard-Seitenelemente) an den Server? Oder entferne ich alle onClicks, aktiviere die Kontrollkästchen, sende eine Anfrage mit allen IDs an den Server und füge die onClicks erneut hinzu? Oder...? Ähnliches Problem mit deaktivieren Sie alle.speed: Es kann zu Problemen kommen, wenn 100 Benutzer die ganze Zeit über das Kontrollkästchen aktivieren oder deaktivieren.browser speed: Ich denke, es ist am besten, den onClick mit JS nach dem Laden der Seite hinzuzufügen, was meiner Meinung nach eine Sekunde oder 2 dauern könnte, wenn sich 500 oder mehr Elemente auf einer Seite befinden. Wäre mit check all ein größeres Problem geworden.

In der Vergangenheit habe ich keine zuverlässige Methode gefunden, um festzustellen, wann der Benutzer eine Seite verlässt. Wenn es einen zuverlässigen Weg gibt, könnte ich sehen, dass dies eine Option ist, so dass es nur bei jedem Seitenentladen aufzeichnet.

ibt es noch andere Lösungen oder bessere Methode

Bearbeiten Wie von @ erwähEran Galperin, die Methode check all müsste nur jedes der Kontrollkästchen markieren und dann mit allen Zeilen einen Ajax-Aufruf durchführen. OnClick muss nicht entfernt werden.

Auch sieht es so aus, als wäre die Event Delegation-Methode eine gute Idee - würde die Dinge viel einfacher machen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage