何时使用序列化(serialize)而不是普通的POST请求?

9
我最近提了一个问题,部分得到了答案,但我希望有人能更清楚地解释一下。这个问题涉及PHP和序列化函数。
我有一个表单,其中有12个字段,每个字段都有名称。传统上,我只需使用POST方法,将它们发送到PHP页面,然后将它们提供给数据库即可。
今天我偶然发现了serialize方法,但使用后发现它似乎并没有做任何常规POST语句所能做的事情。例如,如果我想使用serialize,我会按照以下方式进行:
var formData = $('#contForm').serialize();
$.post('functs.php',formData,dispAdd);

那么要打印一个值,我会使用

echo $_POST['value_name']

我看到的情况是,无论是否使用序列化,我都得到了相同的结果。这里有什么我漏掉了吗?


5
序列化是收集所有表单数据并发送的最简短方法。 - user1646111
其实并不是这样的,因为它可以在不使用序列化的情况下工作? - Robert Mailloux
3
如果不使用ajax,数据将会被提交。但是如果你使用ajax并且不使用序列化,你必须手动创建键值对。 - user1646111
哦,我明白了!谢谢你,因为我还没有到我的回调函数。我只是想先弄清楚这个问题,否则以后会让我疯掉的。所以在使用 AJAX 与服务器通信时需要序列化。注意了! - Robert Mailloux
1个回答

4

.serialize() 方法将表单元素序列化成标准的URL-encoded字符串。它作用于一个jQuery对象,该对象代表一组表单元素,这些表单元素可以有多种类型。查看更多

.serialize() 适用于通过AJAX请求发送数据时使用。它与使用提交按钮提交表单相同,唯一的不同在于使用AJAX时不会刷新页面。这就是为什么你在使用提交按钮或 .serialize() 进行AJAX请求时得到相同的结果。

.serializeArray().serialize() 的替代选择。

记住 如果您不使用 .serialize(),您必须按照@Akam在上面评论中提到的手动创建键值对。

最后:

何时使用 serialize <-- 当您使用AJAX来发布数据时

当您使用提交按钮来发布数据时,请使用常规POST <--


非常感谢!我还在这里找到了一个不错的小教程:http://www.namepros.com/webmaster-tutorials/281176-php-using-serialize-handle-store-arrays.html - Robert Mailloux
这篇文章正是我所需要的。感谢您提供如此好的解释。我总是在这些论坛上学到很多东西。 - Robert Mailloux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接