我正在使用jquery的POST api(https://api.jquery.com/jquery.post/)将一些表单数据发送到服务器。服务器解析请求时,其中一个字段在名称中添加了方括号,例如。 foo
成为foo[]
。这破坏了服务器上的表单处理。发生了什么事?
答案 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静默重命名字段的决定感到困惑-这可能会浪费很多时间(对我来说是如此)来调试神秘错误。