我已经尝试解决这个问题几天了,但是它让我感到非常困扰。我有一些需要通过Ajax提交的数据。它是动态的,因此我不知道它有多少个字段。此外,字段的名称是多维的,也是动态的。例如,一个输入框可能具有名称为
我尝试过对数据进行序列化,但那只会得到一个
data[name]
和data[title]
的字段,而另一个更大的输入框可能具有data[images][0][src]
、data[images][0][alt]
、data[images][0][description]
、data[images][1][src]
、data[images][1][alt]
、data[images][1][description]
等,其中数组中的元素数量未知。我的问题是,我需要获取一个可以通过Ajax提交的对象,同时保持数据的结构。我尝试过对数据进行序列化,但那只会得到一个
name = value
的字符串。我也尝试过序列化数组,但那只会给我一个[name, value]
的数组。我成功使用正则表达式手动生成了对象,但我找不到将结果对象合并在一起的方法。我的最新代码版本如下:$('.modal-content').find('input[name^="data"]').each(function () {
var found = $(this).attr('name').match(re).reverse();
var temp = $(this).val();
$.each(found, function ()
{
str = this.substr(1, this.length - 2);
var t = {};
t[str] = temp;
temp = t;
});
data = $.each({}, data, temp);
});
很不幸,它并不会合并它们,而是用temp中的内容覆盖了data中的内容。如果data有data.images[0].src = "mysrc"
,而temp有data.images[0].alt = "myalt"
,那么最终我只得到data.images[0].alt = "myalt"
,src便不再存在。
肯定有一个简单的方法来解决这个问题,现在,我甚至可以采用复杂的方法来解决这个问题。请有人能帮助我吗?
name="data[x][y][z]
,其中xyz是动态的,而且有未知数量的段落。有些将是文本输入框,其他是单选按钮,有些是下拉选择框,其他是文本区域(我知道目前只处理输入,一旦输入正常,将调整代码)。 - Styphondata[images][0][src]
,我需要JSON为{data:{images[{src: value}]}}
。 - Styphon{data:{images[{src:value}]}}
与{data:{images[{alt:value}]}}
合并,则无法像预期的那样得到{data:{images[{src:value,alt:value}]}}
,src: value
会被覆盖。 - Styphon