как запомнить входные данные в формах даже после обновления страницы?

что делать, чтобы форма запоминала предыдущий ввод или текущий ввод пользователя даже после обновления страницы?

я должен делать ,

<div class="row"> <label>Contact Messenger </label> <input type="text" name="messenger" id="messenger" size="50" maxlength="50" value="<?php echo $_SESSION['messenger']; ?>"/> </div> 

или

  <div class="row"> <label>Contact Messenger </label> <input type="text" name="messenger" id="messenger" size="50" maxlength="50" value="<?php echo $_POST['messenger']; ?>"/> </div> 

или

есть трюк, чтобы сделать это? .. как?

на странице, где отправляется ваша форма, сделать что-то вроде этого

  session_start(); $_SESSION['data'] = $_POST['data']; $_SESSION['data_another'] = $_POST['data_another']; 

и вы можете получить доступ к этим переменным сеанса где угодно

  session_start(); // this should be at the top of the page before any html load <input type="text" name="name" value="<?php echo $_SESSION['data'];?>"/> 

обновите свою страницу при успешном вызове как это

  $.ajax({ type: "POST", url: "yourfile.php", data: 'data='+ data, success: function(){ location.reload(); } }); 

У меня была аналогичная проблема в одном из моих проектов, поэтому я написал несколько js, чтобы обработать это с помощью файлов cookie. Сначала я нашел две простые функции для установки и получения значений cookie:

 function setCookie(c_name, value, exdays) { var exdate = new Date(); exdate.setDate(exdate.getDate() + exdays); var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString()); document.cookie = c_name + "=" + c_value; } function getCookie(c_name) { var c_value = document.cookie; var c_start = c_value.indexOf(" " + c_name + "="); if (c_start == -1) { c_start = c_value.indexOf(c_name + "="); } if (c_start == -1) { c_value = null; } else { c_start = c_value.indexOf("=", c_start) + 1; var c_end = c_value.indexOf(";", c_start); if (c_end == -1) { c_end = c_value.length; } c_value = unescape(c_value.substring(c_start, c_end)); } return c_value; } 

Затем я написал две другие функции для установки и получения входных значений:

 function saveValue(input) { var name = input.attr('name'); var value = input.val(); setCookie(name,value); } function getValue(input) { var name = input.attr('name'); var value = getCookie(name); if(value != null && value != "" ) { return value; } } 

И используя jQuery, я сохраняю входное значение пользователя в cookie сеанса

 $('input[type=text]').each(function(){ var value = getValue($(this)); $(this).val(value); }).on('blur', function(){ if($(this).val() != '' ) { saveValue($(this)); } }); 

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

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

Возможно, вы сможете сделать какой-то очень странный JavaScript-хакинг, но я бы не предложил этого.

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

Если вы имеете в виду, заполнив поля формы и щелкнув обновление, то нет прямого пути, так как данные не отправляются. Такое поведение зависит от браузера.

Единственное, что вы могли бы сделать, это отправить данные через AJAX обратно на ваш сервер при изменении полей. Ваш PHP-скрипт, получающий данные, установит некоторые переменные сеанса. Когда форма загружается, вы устанавливаете значения по умолчанию для соответствующих значений сеанса.

Редко, хотя есть необходимость такого поведения. На ваш сервер будет отправлено много запросов, отправляемых туда и обратно.

Ни одно из ваших предложений не поможет вам «запомнить» данные после обновления (действие, которое не отправляет данные на сервер). Вам нужно захватить данные через javascript (возможно, с типом событий onkeyup) и захватить его с помощью файлов cookie. С jquery очень легко.

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

Пример:

Форма отправляется с вводом ssName и скрытым полем ssAct со значением отправки

Получить ssName и ssAct в форме submit

 $ssAct=$_REQUEST["ssAct"]; $ssName=$_REQUEST["ssName"]; 

и форму

 <input type="text" name="ssName" value="<?php if($ssAct=='send' && $ssName!='') { echo "$ssName"; } ?>"> <input type="hidden" name="ssAct" value="send"> 

На имя отправки будет отображаться эхо, если оно было отправлено и не было пустым.

попробуйте autocomplete атрибута, возможно, он будет работать на некоторых браузерах …

 <input type="text" autocomplete="on" /> 

Вы также можете использовать автозаполнение form .

Есть некоторые основные проблемы, которые необходимо проверить, чтобы получить данные после обновления или любого обработчика событий:

1) Имейте в виду подпись. он должен содержать атрибут method = "post" следующим образом:

  <form method="post"/> 

иначе использование $ _POST ['messenger'] не будет работать.

Значением по умолчанию атрибута метода в форме является get.

  <form> equals to <form method="get"> 

2) Многие программисты смешивают между атрибутами id vs name . Имейте в виду использование правильного атрибута. Ассоциативный массив $ _POST использует имя для получения данных из него. Вот почему следующий пример не будет работать правильно:

  <input type="text" id="data" value="<?php echo isset($_POST['data']) ? $_POST['data'] : "" )?/>" 

Чтобы он работал правильно, вы должны добавить атрибут name = "data" следующим образом:

  <input type="text" name="data" id="data" value="<?php echo isset($_POST['data']) ? $_POST['data'] : "" )?/>" 

Удачи

Вы также можете обойтись без сеанса, как показано ниже:

 <input type="text" name="Fname" value="<?php if(isset($_POST['Fname'])){ echo $_POST['Fname']; } ?>" /><br/> 

Это сохранит введенные данные внутри поля ввода!