Мне нужно добавить функциональность, аналогичную Gmail, где флажки в списке элементов запоминаются на нескольких страницах результатов, а также при уходе и возвращении к результату. То, что я пытаюсь выяснить, является лучшим способом сделать это. Я использую PHP и, вероятно, jQuery.
Моя первая мысль - добавить onClick для каждого флажка, который запускает обратный вызов AJAX серверу, который сохраняет идентификатор в массиве в сеансе. Каждый раз, когда загружается список элементов, система проверяет, отмечена ли строка, и, если необходимо, устанавливает флажок. Для надежности этот флажок будет снят после проверки, если запрос к серверу не может быть выполнен (проблема с подключением, ошибка сервера и т. Д.), И запрос будет выполнен максимально быстро.
Звучит все хорошо, кроме нескольких пунктов:
- отметьте все: что происходит? Отправляет ли он 30 (элементов страницы по умолчанию) на сервер? Или я должен удалить все onClicks, установить флажки, отправить запрос на сервер со всеми идентификаторами, а затем повторно добавить onClicks? Или же...? Аналогичная проблема с снятием отметки со всех.
- скорость: могут возникнуть проблемы, если сотни пользователей все время проверяют и снимают галку
- скорость браузера: я думаю, что лучше всего добавить onClick с JS после загрузки страницы, что, я думаю, может занять секунду или 2, если на одной странице 500 или более элементов. Будет больше проблем с проверкой всех.
В прошлом я не нашел надежного способа определить, когда пользователь покидает страницу. Если есть надежный способ, то я мог бы видеть, что это вариант, поэтому он просто записывает каждую выгружаемую страницу.
Есть ли другие решения или лучшие методы?
Редактировать: Как упомянуто Эран Гальперин , метод check all должен был бы только проверить каждый из флажков и затем выполнить вызов ajax со всеми строками. Не нужно удалять onClick.
Кроме того, похоже, что метод делегирования событий является хорошей идеей - это намного упростит задачу.