JavaScript сохраняет значение скрытых входных переменных даже после обновления страницы (F5 или нажатие кнопки обновления браузера) - PullRequest
3 голосов
/ 20 января 2012

У меня странная проблема, может быть, некоторые из вас уже сталкивались с ней. Вот вопрос,

У меня есть скрытое поле ввода в html (с использованием perl / mason),

<input type='hidden' id='noB'  name='noB' value='<% $noB%>'/> ; 

значение ($noB) заполняется на стороне сервера.

В моем JavaScript я использую

var noB = jQuery('#noB').val(); 

чтобы получить значение и обработать его.
Самое главное, каждый раз, когда я буду обращаться к этому значению внутри функции javascript в новой переменной, предположим, что noB = 3, выполню некоторую обработку и обновлю скрытую переменную noB, указав новое значение, равное 1, поэтому это не глобальная переменная, которую я использую сделать это.

Теперь, если я изменю noB, скажем, 1 в моем javascript и после того, как эта страница обновляется с помощью F5, когда страница загружается снова, и я пытаюсь получить значение.

var noB = jQuery('#noB').val();

Я получаю noB = 1 только тогда, когда должно быть 3.

Пожалуйста, помогите.

Ответы [ 3 ]

2 голосов
/ 20 января 2012

Firefox (и, возможно, другие браузеры) перезагрузит элементы формы со значениями, которые они имели при обновлении страницы, даже если это не значение, указанное в HTML.Простое решение: перезагрузите страницу, вернувшись к ней, а не обновляя.

0 голосов
/ 21 августа 2014

Хотя он очень старый, но я столкнулся с подобной проблемой и нашел это решение:

  1. Вместо использования скрытого поля ввода используйте label.innerHTML для хранения вашего значения
  2. Вы можете получить доступ к / изменить значение innerHTML метки, используя javascript.
  3. Значение метки будет обновляться при каждом обновлении страницы.

Надеюсь, это поможет.

0 голосов
/ 02 февраля 2012

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

Это можно сделать, поместив следующий тег <meta> в заголовок HTML:

    <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
...