0
  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,但我还找不到可靠的解决方案。

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

4

3 回答 3

0

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

你必须要么

  • 将发布的值存储在 cookie 中
  • 将发布的值存储在服务器端的会话变量中
  • 将发布的值作为 GET 参数添加到新 URL
  • document.referer使用 GET 发布原始表单,并痛苦地从新页面上提取发布的值
于 2011-08-22T09:03:44.377 回答
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 数据没有被传递给重定向到脚本(没有检查这是否自动发生),您可以在第一个 php 脚本中将 $_POST 数据写入 $_SESSION 变量中:

<?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
?>
于 2011-08-22T10:19:52.043 回答
0

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

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

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

于 2011-08-22T10:02:08.493 回答