【问题标题】:Why are my form field names arriving with square brackets when I post via jquery?当我通过 jquery 发布时,为什么我的表单字段名称带有方括号?
【发布时间】:2018-08-17 15:35:30
【问题描述】:

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

【问题讨论】:

    标签: jquery ajax forms


    【解决方案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 默默重命名字段的决定感到困惑 - 这可能会浪费大量时间(就像对我一样)尝试调试神秘错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      • 2018-01-12
      相关资源
      最近更新 更多