Показать сообщение отдельно
  #3 (permalink)  
Старый 31.08.2011, 02:00
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

Кроме того, я был бы очень рад услышать совет на тему как бы лучше организовать запись.
Я догадываюсь, что надо копать в сторону AJAX, но есть проблема.
Мне уже приходилось использовать для одностороннего взаимодействия картинки. Здесь я не очень знаю как быть.

Дело в том, что передавать данные после потери фокуса полем ввода я не хочу, чтобы пользователь мог выйти, не сохраняя изменений. Я этого хочу осознанно, чтобы данные не были безвозвратно испорчены и был возможен откат.

Есть идея вести некий список id полей, которые были модифицированы (ну хотя бы в которых побывал фокус ввода). Но тут есть проблемка - время сохранения. Допустим, пользователь нажал на кнопку смены страницы. Данные надо срочно сохранить, иначе мы их потеряем. Можно вывести confirm на всякий случай. Но дело в другом. Если пользователь специально жмёт кнопку Сохранить, которая не вызывает перехода к другому скрипту, мы можем предположить, что он готов подождать. Можно даже анимацию какую-нибудь вывести.

Но вот если он хочет перейти на другую страницу, и вдруг у него всё молча повисает... это явно не камильфо Вывод confirm-а сгладит впечатление, но не полностью. Анимация? Ну разве что... Беда в том, что запросов может быть очень много - максимум 40*30 = 1200, и это при том, что в классе лишь 30 учеников (а вдруг чуть больше?)
Меня это здорово беспокоит. Раньше, конечно, уходило на сервер полторы тысячи записей, но во-первых при доступе через Интернет, а не через локалку ждать приходилось секунд 8-10 даже при неплохом канале (замерял правда весной 2008 года), но там хоть было видно в браузере, что загрузка идёт и всё такое. А тут что, тишина будет?

Главное - то, что мы не имеем права перейти на следующую страницу, пока все запросы на апдейт не будут успешно отправлены. Поскольку смена страницы = перезагрузка документа, всё что не успело отправиться, умирает.
Ответить с цитированием