如何从php重定向中序列化ajax中的$ _POST数据

时间:2016-10-19 14:58:59

标签: php jquery ajax post

我让用户在页面A上填写表单,然后我重定向到页面B用它发送$ _POST数据。我已经看到我可以从$("form").serialize()this.serialize()这样的表单序列化帖子数据,但我不想从我需要从$ _POST获取的表单中检索数据。如何从当前页面上存在的表单序列化$ _POST数据?

2 个答案:

答案 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']。你去吧我以前从未回答过我自己的问题。