Возможно ли получить предыдущую переменную формы POST, используя JavaScript?

  1. Клиент переходит на example.com/form.html, где отображается HTML-форма POST
  2. Клиент заполняет форму конкретной информацией и отправляет ее на example.com/form.html
  3. Когда 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 на новой странице
Другие вопросы по тегам