Я сделал новую версию журнальчика)
Старый топик ужасно разросся, кроме того, у него неактуальный заголовок. Поэтому я предлагаю перенести обсуждение сюда.
Итак, сначала я доделал отправку данных через POST. Мне понравилось
Потому что быстро, потому что лог не засоряет, в общем, много почему)
Прогрессбар я убрал до поры, и назвал эту версию 4.2
Версию 4.3 я сделал уже сегодня днём. Она порадует (потенциальных пользователей я имею в виду) неопределённым прогрессбаром, который будет скрашивать ожидание тех, у кого медленный коннект, а также тех, кто сделал кучу изменений в таблице (500 запросов и более уже дают 3-4 секунды полюбоваться индикатором даже на локалке).
Что особенно важно, я прикрутил новую логику внесения изменений. Работает она совсем просто: после загрузки ставит всем текстовым полям атрибут с начальным значением. Далее, при потере фокуса, после проверок формата, производится, как и раньше, конструирование псевдозапроса (на основе которого на сервере будет создан MySQL запрос) и проверка на наличие такого же запроса (возможно с другим значением) в массиве. То есть сверяются начальные куски строк.
Ранее, в случае нахождения, старый запрос просто перезаписывался в массиве (чтобы одинаковые значения в базе по несколько раз не менять), а новый не добавлялся.
Теперь всё хитрее. В случае нахождения запроса в массиве, JS код сверяет текущее значение с начальным. Если вдруг оказалось, что значение поля стало прежним (то есть тем, которое сейчас находится в БД), запрос чистится. Потом, перед передачей, мне пришлось ввести ряд дополнительных проверок, чтобы исключить передачу на сервер строк, состоящих исключительно из запятых-разделителей.
В случае же, если запрос не найден, он добавляется - но теперь только в том случае, если значение поля не равно начальному (то есть теперь можно гулять фокусом по полям сколько угодно, и это не спровоцирует не только отправки данных потом, но даже не вызовет пополнение массива запросов в текущий момент.
Вот так.