是否可以使用javascript获取以前的表单POST变量?

时间:2011-08-22 08:36:30

标签: javascript ajax iframe frameset-iframe

  1. 客户端访问example.com/form.html,其中显示了html POST表单
  2. 客户使用特定信息填写表单并将其提交至example.com/form.html
  3. 当example.com/form.html收到POST请求时,会在example.com/redirected.html上重定向客户端 是否可以使用javascript检索客户端填充并发布到example.com/form的变量?仅在example.com/redirected.html上部署的javaScript。我认为可以是一些“后退”控制iframe和ajax但我找不到可靠的解决方案。

    该操作将在同一个域上进行,因此不涉及跨域问题

3 个答案:

答案 0 :(得分:0)

不,我不认为这是可能的。

你必须

  • 将发布的值存储在Cookie中
  • 将发布的值存储在服务器端的会话变量中
  • 将发布的值作为GET参数添加到新网址
  • 使用GET发布原始表单,并在新页面上从document.referer痛苦地提取发布的值

答案 1 :(得分:0)

使用HTML5,使用localstorage。 (答案描述了如何在localstorage中存储对象 - 您可以在其中存储表单域的对象。)

您必须使用 js at example.com/form.html 存储数据,然后才能在example.com/redirected.html上获取。如果没有js在form.html,这种方法是不可能的。

如果您打算使用html5并且不会在其中存储太多数据,则此方法有效,根据浏览器的不同,iirc的限制为5-10mb。

答案 2 :(得分:0)

我认为有一种方法可以通过使用普通的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数据传递给重定向到脚本(没有检查是否自动发生这种情况),你可以在$ _SESSION变量中编写$ _POST数据,在第一个php脚本中:

<?php
  $_SESSION['postdata']=$_POST;
?>

然后从SESSION将其从重定向恢复到脚本。

<?php
  $postdata = $_SESSION['postdata']; //use this to create the inline script in the html
  unset($_SESSION['postdata']; //empty this from the SESSION variables
?>