.serialize()和.serializeArray()之间有什么区别?

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

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

我错过了什么?

serializeArray创建一个数组( 不是 “json数组” – 没有这样的东西); 您可以使用console.log($("#myform").serializeArray())测试。 另一方面, serialize创建一个查询字符串,该字符串意味着是HTTP请求的一部分。 这两种表示在某种意义上是等效的,即使用适当的代码可以将一个代码转换为另一个而没有任何歧义。

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

jQuery的AJAX方法并不关心你是否给他们一个或另一个,因为他们检测参数的类型并将其转换为查询字符串,如果它已经不是一个,那么请求是在观察者之外发出的,不能告诉他们是什么参数的原始格式。