ajax и шаблон локального/сеансового хранения

Я создаю веб-приложение, которое использует ajax для связи с сервером. По сути, пользователь запрашивает запись, она возвращается в формате json, добавляется в DOM, и пользователь вносит в нее изменения. Когда пользователь запрашивает следующую запись, текущая запись преобразуется в строку и отправляется обратно на сервер, а следующая запись возвращается.

Все это работает очень хорошо... до тех пор, пока пользователь продолжает запрашивать записи. Однако мне интересно, как справиться с ситуацией, когда пользователь останавливает свою работу: как мне обновить последнюю запись?

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

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

Какие есть хорошие способы справиться с этой проблемой. Спасибо за ваши предложения.


person frenchie    schedule 22.11.2011    source источник


Ответы (2)


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

person MikeD    schedule 22.11.2011
comment
Хорошо, это звучит как лучшее решение. Спасибо. - person frenchie; 23.11.2011

Если ваше приложение требует входа в систему, вы можете ввести localStorage, используя их идентификаторы, например:

localStorage.getItem( "user13434" )

будет получать данные для пользователя 13434

localStorage.getItem( "user12345" )

будет получать данные для пользователя 12345

Если информация является конфиденциальной, но не слишком конфиденциальной, вы можете добавить шифрование, но ее могут расшифровать опытные пользователи, поэтому она не должна быть слишком конфиденциальной.

person Esailija    schedule 22.11.2011
comment
Я тоже об этом думал, но проблема в том, что для этого потребуется какая-то форма идентификатора пользователя на стороне клиента. Я ищу, чтобы избежать этого. - person frenchie; 22.11.2011