Ich brauche, um Funktionalität ähnlich wie Google Mail hinzufügen, wo die Checkboxen auf einer Liste von Elementen über mehrere Seiten der Ergebnisse und beim Weggehen und Zurückkehren zu dem Ergebnis gespeichert wird. Was ich versuche, herauszufinden, ist der beste Weg, dies zu tun. Ich bin mit PHP und wahrscheinlich jQuery.
Mein erster Gedanke ist, ein onClick zu jedem Kontrollkästchen hinzuzufügen, das einen AJAX-Aufruf zurück an den Server auslöst, der die ID in einem Array in der Sitzung speichert. Jedes Mal, wenn eine Liste von Elementen geladen wird, würde das System prüfen, ob die Zeile markiert ist, und das Kontrollkästchen bei Bedarf aktivieren. Um die Zuverlässigkeit zu gewährleisten, würde das Kontrollkästchen nach der Überprüfung deaktiviert werden, wenn die Anfrage an den Server nicht abgeschlossen werden kann (Verbindungsproblem, Serverfehler usw.), und die Anfrage würde so schnell wie möglich erfolgen.
Das hört sich alles gut an, bis auf ein paar Punkte:
- Alles prüfen: Was passiert? Werden 30 Anfragen (Standard-Seiteneinträge) an den Server gesendet? Oder entferne ich alle onClicks, aktiviere die Kontrollkästchen, sende eine Anfrage an den Server mit allen IDs und füge dann die onClicks wieder hinzu? Oder...? Ähnliches Problem mit uncheck all.
- Geschwindigkeit: Es könnte zu Problemen kommen, wenn Hunderte von Nutzern die ganze Zeit das Häkchen setzen und entfernen.
- Browsergeschwindigkeit: Ich denke, es ist am besten, die onClick mit JS hinzufügen, nachdem die Seite lädt, die ich denke, könnte eine Sekunde oder 2, wenn es 500 oder mehr Elemente auf einer Seite sind. Würde ein größeres Problem mit Check alle werden.
In der Vergangenheit habe ich keine zuverlässige Methode gefunden, um zu erkennen, wann der Benutzer eine Seite verlässt. Wenn es einen zuverlässigen Weg, dann könnte ich sehen, dies als eine Option, so dass es nur Datensätze auf jeder Seite entladen.
Gibt es andere Lösungen oder bessere Methoden?
Editar: Wie bereits von Eran Galperin Die Check-All-Methode bräuchte nur jedes der Kontrollkästchen zu überprüfen und dann einen Ajax-Aufruf mit allen Zeilen durchzuführen. Keine Notwendigkeit, die onClick zu entfernen.
Außerdem sieht es so aus, als ob die Methode der Ereignisdelegation eine gute Idee ist - sie würde die Dinge viel einfacher machen.