Кэширование данных формы в браузере - решение на стороне клиента - PullRequest
0 голосов
/ 17 сентября 2009

По сути, у меня есть форма, в которой есть довольно важная информация. Риск, связанный с кешированием формы, таков:

1) Пользователь может не заметить, что дата неверна, и просто подумать, что сервер загрузил свои сохраненные данные (что следует, если дата была правильной). Затем они отправляют данные, и они сохраняются в неправильную дату. Они не замечают до следующей недели или когда на них кричат, что они не отправили форму на нужную неделю.

2) Пользователь замечает, но думает, что ошибка на стороне сервера. Они перезагружают форму из браузера вместо того, чтобы отправлять форму изменения даты, чтобы получить правильную дату, все дураки следуют ...

Итак, я подумал, что, поскольку все попытки справиться с кэшированием на стороне сервера, по-видимому, оказывают минимальное влияние на ситуацию, возможно, был более разумный способ ...

Обе идеи основаны на предположении, что браузер использует кэшированные данные только в том случае, если форма ввода пуста (без значения). Итак, первый вопрос, это правда?

Если это так, мне интересно, какая из этих идей была бы более эффективной:

1) Серверный скрипт просто устанавливает все входные данные на 0. Затем у меня есть js-скрипт, который при загрузке страницы устанавливает все входные данные с 0 на «». (0 никогда не будет возможным входом, в случае, если какие-либо колокола).

2) Оставьте серверный скрипт в покое, и просто вышеупомянутый javascript проходит через каждый вход и заменяет value() входа на attr("value") входа. Поэтому, если он не существует, он устанавливает его пустым.

Какие-либо недостатки в моем понимании кэширования браузера или что-то еще? Будет ли какой-либо метод работать лучше?

Пример второй идеи:

$("input :text").val(function() {
        realval = (!($this).attr("value")) ? 0 : $(this).attr("value");
        return realval;
        });

1 Ответ

0 голосов
/ 17 сентября 2009

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

например. идентификатор сеанса 12345

<input type="text" id="12345_firstname" name="12345_firstname" />

Браузер не будет касаться этих полей.

Другим подходом может быть отключение всех полей ввода и включение их обратно включенным с помощью jQuery после загрузки документа.

<INPUT NAME="firstname" DISABLED>
$("input").removeAttr("disabled");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...