- 客户端转到 example.com/form.html,其中显示了一个 html POST 表单
- 客户用特定信息填写表格并将其提交到 example.com/form.html
当 example.com/form.html 收到 POST 请求时,将客户端重定向到 example.com/redirected.html 是否可以使用 javascript 检索客户端填写并发布到 example.com/form 的变量?仅在 example.com/redirected.html 上部署的 javaScript。我认为可能涉及一些“后退”控件 iframe 和 ajax,但我还找不到可靠的解决方案。
该操作将在同一个域上进行,因此不涉及跨域问题
问问题
1319 次
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 回答