Javascript 如何从包含数组的表单数据以编程方式构建对象

Javascript 如何从包含数组的表单数据以编程方式构建对象,javascript,Javascript,我需要在jsp页面上显示一些值,从用户获取输入并将其发送回使用Jackson将其绑定到我的备份数据对象的控制器。我在屏幕上显示的几行由数组支持,并使用创建,我正在生成一个路径,如“blobs[0].id”和“blobs[0].text”。当我试图将它们放入json对象中,通过ajax调用发送回控制器时,它们没有被正确地添加到对象中。属性名的名称中最终包含“[0]”,而不是表示该数组索引处的对象 <script> var formData = {}; formData.blobs =

我需要在jsp页面上显示一些值,从用户获取输入并将其发送回使用Jackson将其绑定到我的备份数据对象的控制器。我在屏幕上显示的几行由数组支持,并使用
创建,我正在生成一个
路径,如“blobs[0].id”和“blobs[0].text”。当我试图将它们放入json对象中,通过ajax调用发送回控制器时,它们没有被正确地添加到对象中。属性名的名称中最终包含“[0]”,而不是表示该数组索引处的对象

<script>
var formData = {};
formData.blobs = [];
formData.blobs[0] = {};
formData.blobs[0].id = "English";
formData.blobs[0].text = "Hello";
formData["blobs[1].id"] = "German";
formData["blobs[1].text"] = "Guten Tag";
console.log(formData);
</script>
访问obj[“attr”]是访问对象属性的一个选项,因此obj[“attr[1][22]”将访问名为“attr[1][22]”的属性,而访问obj[“attr”][1][22]将访问obj.attr的第二个元素以及第二个元素的第22个元素

解决方案是访问
formData[“blobs”][0].id
甚至
formData[“blobs”][0][“id”]
您可以根据需要格式化字符串。

$(“#yourform”)。serializeArray()
返回一个数组:

[
  {"name":"foo","value":"1"},
  {"name":"bar","value":"xxx"},
  {"name":"this","value":"hi"}
]
$(“#yourform”).serialize()
返回一个字符串:

"foo=1&bar=xxx&this=hi"
那么,在你的情况下

var formData = {};
formData.blobs = [];
$('#yourform').serializeArray().forEach(function(blob){
  formData.blobs.push({
    id: blob.name,
    text: blob.value
  });
})

使用
$(“#theForm”).serialize()
请仔细阅读您的数据结构,它很乱。它不能同时产生你提到的两种结构。但这篇文章将为您提供收集表单数据的所有方法:
var formData = {};
formData.blobs = [];
$('#yourform').serializeArray().forEach(function(blob){
  formData.blobs.push({
    id: blob.name,
    text: blob.value
  });
})