通过jQuery发布时,为什么表单字段名称带有方括号?

时间:2018-08-17 15:35:31

标签: jquery ajax forms

我正在使用jquery的POST api(https://api.jquery.com/jquery.post/)将一些表单数据发送到服务器。服务器解析请求时,其中一个字段在名称中添加了方括号,例如。 foo成为foo[]。这破坏了服务器上的表单处理。发生了什么事?

1 个答案:

答案 0 :(得分:1)

当您发送多个输入具有相同名称的数组或表单时,jquery将添加方括号。

通过简单的重复例如在url编码的数据中发送重复的参数完全有效。 foo=bar&foo=baz&foo=qux是发送到服务器的有效内容。大多数服务器会将其解析为一个名为foo的变量,其中包含值的数组。

为了使jquery的行为“正确”(即使用实际名称发送字段),必须在请求中添加{traditional: true}选项。

例如:

let data = {foo: ['bar', 'baz', 'quz']};
$.post({url:'/myurl', data: data, traditional: true, success: onSuccess});

我将承认对jquery静默重命名字段的决定感到困惑-这可能会浪费很多时间(对我来说是如此)来调试神秘错误。