我让用户在页面A上填写表单,然后我重定向到页面B用它发送$ _POST数据。我已经看到我可以从$("form").serialize()
或this.serialize()
这样的表单序列化帖子数据,但我不想从我需要从$ _POST获取的表单中检索数据。如何从当前页面上存在的表单序列化$ _POST数据?
答案 0 :(得分:0)
当有人提交表单时,除非您使用Javascript覆盖默认的浏览器行为,否则它们将被带到页面B.您可以定义表单的“方法”和“操作”以获得所需的行为。因此,对于POST数据,您使用method =“POST”并转到pageb.php,您需要设置action =“/ pageb.php”。然后在pageb.php中,您可以从pagea上的表单访问POST变量。例如。
网页A:
<form name="aform" action="/pageb.php" method="POST">
<input type="text" name="name" />
<input type="submit" value="Submit" />
</form>
输入您的姓名,点击提交,重定向到pageb.php。然后在pageb:
<?php
$name = $_POST["name"];
echo $name;
?>
你看到了这个名字。虽然不是很令人兴奋。
您也可以使用Ajax和jQuery序列化函数将表单数据发送到pageb.php而不离开pagea。
你可以这样做:
<form id="aform" action="/pageb.php" method="POST" onsubmit="return submitForm(event)">
<input type="text" name="name" />
<input type="submit" value="Submit" />
</form>
<script type="text/javascript">
function submitForm() {
event.preventDefault();
$.post('/pageb.php', $("#aform").serialize(), function(response) {
// Do something with the response
});
};
</script>
这是非常基本的,但它会停止表单正常运行,序列化表单并将其发送到pageb。 pageb.php必须输出某种类型的文本,简单或JSON,这可能取决于你想要实现的目标。
答案 1 :(得分:0)
我找到了一个解决方案,以防其他任何人想知道如何做到这一点。
var post_info = [];
创建一个数组来保存所有$ _POST变量。
这是获取所有post变量并将它们放入ajax post_info = <?php echo json_encode($_POST); ?>;
的json数组中的原因。而ajax看起来很正常。
"ajax": {
"url": "ajax/test.php",
"type": "POST",
"data": {post_info: post_info}
},
在php方面,我不需要json_decode,因为ajax将此作为$ _POST变量发送。除了它现在是一个多维数组,因此访问变量看起来像这个$_POST['post']['item']
。你去吧我以前从未回答过我自己的问题。