Возможно ли получить предыдущую переменную формы POST, используя JavaScript?
- Клиент переходит на example.com/form.html, где отображается HTML-форма POST
- Клиент заполняет форму конкретной информацией и отправляет ее на example.com/form.html
Когда example.com/form.html получает запрос POST, перенаправляет клиента на example.com/redirected.html Возможно ли получить переменные, которые клиент заполнил и отправил на example.com/form, используя javascript? Развертывание javaScript только в файле example.com/redirected.html. Я полагаю, что могут быть какие-то "задние" элементы управления iframes и ajax, но я пока не смог найти надежного решения.
Операция будет происходить в том же домене, поэтому проблема с несколькими доменами не затрагивается.
3 ответа
С HTML5 используйте localstorage. (Ответ описывает, как хранить объект в localstorage
- вы можете хранить объект ваших полей формы там).
Но вы должны сохранить данные о публикации с js по адресу example.com/form.html, а затем получить их по адресу example.com/redirected.html. Без js в form.html это невозможно с этим методом.
Это работает, если вы планируете использовать html5 и не храните в нем слишком много данных, iirc имеет ограничение 5-10 МБ в зависимости от браузера.
Я не думаю, что есть способ сделать это с помощью простого HTML. С некоторым серверным языком (например, PHP) это можно сделать без проблем.
Я был в подобной ситуации и раньше, и мне удалось передать данные в JS путем включения данных в тег при подготовке вывода с использованием PHP.
Предполагая, что перенаправленный в php скрипт получает данные POST от скрипта, в который он перенаправлен. Я бы включил это в код php:
<?php
echo '<script type="text/javascript">';
echo 'var postData = '.json_encode($_POST).';';
echo '</script>'
?>
Это позволит javascript знать, что содержат значения POST. Чтобы получить доступ к значениям из js:
//assuming you need the value for $_POST['foo']
var foo = postData.foo;
// or if json is encoded as just an associative array
var foo = postData['foo'];
Если данные POST не передаются в перенаправленный в сценарий (не проверял, происходит ли это автоматически), вы можете записать данные $_POST в переменную $_SESSION в первом сценарии php:
<?php
$_SESSION['postdata']=$_POST;
?>
а затем получить его обратно из сессии с перенаправленным на сценарий.
<?php
$postdata = $_SESSION['postdata']; //use this to create the inline script in the html
unset($_SESSION['postdata']; //empty this from the SESSION variables
?>
Нет, я не думаю, что это возможно.
Вы должны либо
- Сохраните опубликованную стоимость в куки
- Сохраните опубликованное значение в переменной сеанса на стороне сервера
- Добавьте опубликованное значение в качестве параметра GET к новому URL
- Используйте GET, чтобы опубликовать исходную форму, и мучительно извлекать опубликованное значение из
document.referer
на новой странице