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

kaz*_*aze 27 jquery serialization serializearray

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

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

我错过了什么?

Jon*_*Jon 39

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

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

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

  • @kaze:这就像问跑车和旅行车有什么意义一样.如果您将要使用它们的唯一目的是开车到500米以下的商场没有区别,但对于大多数其他事情,您需要使用正确的工具来完成工作. (10认同)
  • @MarkSimpson:一个创建一个数组,另一个创建一个(查询)字符串 - 这是明确的IMO.我认为"答案没有解决问题/是'serializeArray`'的解释是不公平的,因为1)问题文本清楚地表明OP想要知道*为什么两者似乎都这样做事情*和2)第二段完全解释了这一点. (9认同)
  • 好!但是 - 同时拥有serialize()和serializeArray()有什么意义呢? (3认同)
  • 当它没有回答这个问题时,为什么这是接受的答案?问题是".serialize()和.serializeArray()之间有什么区别?" 这个答案只是对serializeArray的作用的解释. (3认同)