我正在尝试将表单发送到控制器。 jQuery文档说.serializeArray()
应该发送一个json数组,而.serialize()应该创建一个查询字符串。
然而,当我尝试它并使用IE9 F12模式进行检查时,它看起来像一个查询字符串,在这两种情况下。我打电话给谁......
我错过了什么?
答案 0 :(得分:38)
serializeArray
创建一个数组(不一个“json数组” - 没有这样的东西);您可以使用console.log($("#myform").serializeArray())
自行测试。另一方面,serialize
创建一个查询字符串,该字符串意味着是HTTP请求的一部分。两种表示在某种意义上是等效的,即使用适当的代码可以将一个代码转换为另一个而没有任何歧义。
两个版本可用的原因是serialize
只是想要发出HTTP请求(只是将结果放在查询字符串中)更方便,而serializeArray
更方便想自己处理结果。
jQuery的AJAX方法并不关心你是否给它们一个或另一个因为它们检测到参数的类型并将其转换为查询字符串(如果它已经不是那个),那么请求是在观察者之外做出的告诉参数的原始格式是什么。