【问题标题】:Serialize PHP/JQuery序列化 PHP/JQuery
【发布时间】:2013-03-12 04:51:02
【问题描述】:

我有一个工作程序,但我刚刚了解了 JQuery 和 PHP 中的“序列化”选项,我认为它可以清理我的代码。问题是,在这里阅读了一些很棒的帖子后,我仍然无法正常工作。如果你不介意,有人可以看看吗?

这是我发送到 PHP 页面的内容(序列化表单数据):

contForm 是我的表单的名称 dispAdd 是我现在还不担心的回调

var formData = $('#contForm').serialize();
$.post('functs.php',formData,dispAdd);
    function dispAdd(status) {
      if (status=='added') {
        $('#main').html('<div>Your have been added to the mailing list</div>');
     } else {
       if ($('#fail').length==0) {
            $('#main'.prepend('<div>This email address is already subscribed to our mailing list</div>');
            }
          }
        }

我知道它正在发送字符串,但我在输出结果时遇到了问题。我计划使用 PDO 中的输出来访问数据库。我正在尝试 parse_str 但它只是不起作用。这是我的格式化方式:

function addMember() 
{
 $params = array();
 parse_str($_POST, $params);

我能做到的就这么多。我试图弄清楚如何访问新变量(序列化表单数据)。有什么建议吗?

【问题讨论】:

  • AFAICT $_POST 的值应该已经包含您的数据作为一个数组。
  • 您是否尝试在您的 PHP 代码中使用 unserialize ? (php.net/manual/en/function.unserialize.php)
  • 如果 POST 无论如何都会携带所有数据,为什么还要使用序列化?请原谅我的无知,但我想我可能误解了序列化的必要性,因为它似乎在这里甚至不需要

标签: php jquery serialization


【解决方案1】:

您的请求通过 AJAX 以application/x-www-form-urlencoded 发送,并被解码为$_POST

如果您的表单中有&lt;input name="test" /&gt;,则在发布后它将变为:

$_POST['test']

【讨论】:

  • 感谢您的回复。那么你能帮我弄清楚我的语法格式吗?名称“formData”是我用来序列化表单的名称。那么应该是 parse_str('formData', $_POST) 吗?
  • @RobertMailloux 不,$_POST['an-input-name'] 应该可以工作。
  • @RobertMailloux jQuery.serialize() 获取表单中的所有输入元素并创建一个提交给 PHP 的字符串;这又被解码为$_POST
  • 谢谢杰克,但为了它,我从我的代码中删除了序列化,事实上,只是发送了没有任何 jquery 的表单,它仍然将数据发送到 POST。正在序列化做我想念的事情,因为它似乎不需要。
  • @Robert jQuery 在您执行此操作时会在幕后为您做一些事情,这就是它在没有显式 serialize() 调用的情况下工作的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
相关资源
最近更新 更多