$ .param()生成的查询字符串包括数组的方括号

时间:2012-09-24 10:07:52

标签: javascript jquery

我有一个这样的对象:

var queryObject= {
      name: 'Shwetanka',
      subjects: ['Mathematics', 'Physics', 'Computers'],
      stream: 'science'
    };

当我使用$.param(queryObject)创建查询字符串时,我将其作为查询字符串:

name=Shwetanka&subjects%5B%5D=Mathematics&subjects%5B%5D=Physics&subjects%5B%5D=Computers&stream=science

预期:name=Shwetanka&subjects=Mathematics&subjects=Physics&subjects=Computers&stream=science

如何通过查询字符串中的方法为同名的params添加[]。在后端我使用struts2来读取参数。

2 个答案:

答案 0 :(得分:4)

我找到了解决方案。我只需要在$.param(queryObject, true)中传递'traditional = true'。这会生成我想要的查询字符串。

答案 1 :(得分:0)

当我们在表单中有相同名称的字段并且通过GET/POST提交时,它必须作为具有相同名称的params数组发送。   并且服务器将期望这样的值。所以,即使你以某种方式删除[],它也不再是一个数组,服务器只能得到一个值。 设计了jQuery param方法,同样考虑到了同样的事情。 查看http://api.jquery.com/jQuery.param/中的示例。