【问题标题】:PHP unserialize jQuery FORM postPHP反序列化jQuery FORM帖子
【发布时间】:2013-04-14 19:05:58
【问题描述】:
<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) { }

已测试 post DATA 中是否包含数据:

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

我明白了:

name=blabla&comment=blabla1

然后当我这样做时

echo $_POST['guest'];

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

问题:

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

谢谢!

【问题讨论】:

  • 这是因为您将表单序列化到 JQuery 中的 data 字段中,所以您在 PHP 中得到了它。尝试去掉 post 函数中的 data : 部分,以便数据按预期传递到 $_POST 数组。

标签: php jquery


【解决方案1】:

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

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

现在您可以访问$_POST['guest']

【讨论】:

  • 哇,我不知道这个!非常感谢!
【解决方案2】:
<?php
parse_str($_POST['data'], $data);
print_r($data);

【讨论】:

    【解决方案3】:

    你做错了。像这样试试

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

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

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

    删除您不需要的数据键。$("#form").serialize() 将在帖子中生成一个查询字符串,您可以在通常的表单提交时轻松访问它。

    参考文献

    JQuery .serialize

    【讨论】:

    • 对象文字必须有键/值对。您的代码的第 3 行没有改进。
    • @Quentin 在投票和评论之前查看结果。无论如何,我不会删除我的答案,因为我已经这样使用了几个月。
    • 很遗憾@Musa 发布的同一件事得到了支持,而我却毫无理由地被否决了。
    【解决方案4】:

    从您所写的内容看来,$_POST['data']['guest'] 将包含您要查找的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多