PHP反序列化jQuery FORM帖子

时间:2013-04-14 19:05:58

标签: php jquery

<form action="index.php" method="POST" id="form">
<input type="text" name="guest" id="guest_name" class="textbox"/><br />
<textarea name="textarea" id="text" class="textarea"></textarea/><br />
<input type="submit" id="submit" class="submit"/><br />
</form>

Jquery的

$.post("events.php?action=send", { data :  $("#form").serialize() }, function(data, error) { }

如果发布的数据中包含数据,则进行测试:

echo var_dump($_POST['data']);

我明白了:

name=blabla&comment=blabla1

然后当我做

echo $_POST['guest'];

什么都没有出现,它是 NULL。

问题:

我做错了什么?为什么POST客人没有被填满?如果它在DATA中,那么form的方法也是POST。

谢谢!

4 个答案:

答案 0 :(得分:8)

将序列化字符串作为数据参数传递给$ .post而不是数据参数为序列化字符串的对象

$.post("events.php?action=send", $("#form").serialize() , function(data, error) { }

现在您将能够访问$_POST['guest']

答案 1 :(得分:2)

<?php
parse_str($_POST['data'], $data);
print_r($data);

答案 2 :(得分:0)

你这样做是错误的。试试这个

$.post(
        "events.php?action=send", 
        $("#form").serialize() , 
        function(data, error) {}
);

在php端访问$ _POST这样的数组

echo $_POST['guest'];
echo $_POST['textarea'];

删除您不需要的数据密钥。$("#form").serialize()将在帖子中创建一个查询字符串,您可以在访问usuall表单时轻松访问该字符串。

参考

JQuery .serialize

答案 3 :(得分:-1)

根据你所写的内容,看起来像$ _POST ['data'] ['guest']会有你想要的东西。