перезагрузить страницу я теряю все значения в форме

0

Я создал веб-форму, в которой есть несколько полей, которые были введены вручную, другие, которые являются выпадающим списком, и некоторые поля календаря, которые находятся в javascript. В моем последнем добавлении есть раскрывающийся список, который заполняется из выбранного значения предыдущего раскрывающегося списка. Когда он перезагружает форму, я теряю все ранее введенные значения и сохраняю только значение в раскрывающемся списке. Должен ли я записывать все значения, или есть способ просто заполнить второй выпадающий список без перезагрузки формы?

Теги:
forms
drop-down-menu

4 ответа

1
Лучший ответ

-.- одно слово. AJAX. используй это.

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

Если вы должны перезагрузить страницу, сохраните все данные в файле cookie или что-то еще.

  • 0
    Я сопротивлялся AJAX во всей этой форме, но я думаю, что это мой единственный вариант. Я собираюсь научиться этому.
  • 0
    Нет смысла сопротивляться Ajax. большинство пользователей ненавидят формы, которые отправляются с обновлением страницы. соси это.
1

Там можно сохранить данные без ajax и без отправки чего-либо на сервер. Он назывался sessionStorage.

// store item
localStorage.setItem("index", "value");

// retrieve item
var data = localStorage.getItem("index");

Поэтому вам просто нужно сохранить данные с помощью sessionStorage после любого действия (нажмите кнопку, keydown, mouseleave...) и перезагрузите страницу, вам просто нужно будет заполнить ее снова из данных, которые вы сохранили в сеансе!

0

Проверьте cache-control страницы. Этот атрибут говорит браузеру опираться на собственный кеш, чтобы перезагрузить страницы.

Это можно установить как метатег. Например:

<meta http-equiv="Cache-control" content="public">

Но лучший подход (по моему мнению) осуществляется через серверную сторону, используя функцию header().

Обратите внимание, что некоторые предпочитают устанавливать его no-cache когда дело доходит до форм, чтобы избежать спама, а также по соображениям безопасности.

0

Я предполагаю, что перезагружая форму, которую вы хотите передать, она возвращает версию страницы со вторым выпадающим списком, расположенным в соответствии с представленным первым выпадающим списком. Если это так, вы можете подумать о том, чтобы все возможные значения второго раскрывающегося списка были скрыты, а затем заполняли его JavaScript после выбора в первом. Если количество возможных значений очень велико или должно быть вычислено на стороне сервера (как, вы не можете знать все значения изначально), вы можете использовать AJAX для отправки формы и не перезагружать всю страницу.

  • 0
    Нет, я на самом деле имел в виду перезагрузку страницы, которая теперь, когда вы сказали это, заставляет меня понять, что перезагрузить страницу, заново инициализировать все, так что в любом случае моя проблема не решится. Я собираюсь посмотреть на адаптацию AJAX к моей форме.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню