29

我正在尝试将表单发送到控制器。jQuery 文档说.serializeArray()应该发送一个 json 数组,并且.serialize()应该创建一个查询字符串。

但是,当我尝试使用 IE9 F12 模式进行检查时,在这两种情况下,它看起来都像是一个查询字符串。我打过哪个电话...

我错过了什么?

4

1 回答 1

43

serializeArray创建一个数组(不是“json数组”——没有这样的东西);你可以自己测试一下console.log($("#myform").serializeArray())。另一方面,serialize创建一个作为 HTTP 请求一部分的查询字符串。这两种表示在某种意义上是等价的,因为使用适当的代码,您可以毫无歧义地将一种表示转换为另一种表示。

两个版本都可用的原因是,serialize当您只想发出 HTTP 请求(只需将结果放在查询字符串中)时serializeArray更方便,而如果您想自己处理结果则更方便。

jQuery 的 AJAX 方法不在乎您是否给它们一个或另一个,因为它们会检测参数的类型并将其转换为查询字符串(如果它还不是一个),因此到发出请求时,外部观察者无法分辨是什么参数的原始格式。

于 2012-05-03T11:37:14.243 回答