Jquery将序列化数据放入数组

3
我想从表单中获取所有数据,并将其放入一个可访问的数组中。以下是我目前的代码:
var data = $("#everything").serializeArray();
var test = [];
$(data).each(function(index, element) {
    test[element] = element.val();
});

我尝试了这个:

alert(data["fname"]);

即使文本框中有内容,该方法返回“未定义”,因此我必须使用.each方法。但是现在当我执行以下操作时:

alert(test["fname"]);

它甚至没有弹出消息。有人知道我做错了什么吗?我只想将所有表单数据放入一个数组中,以便通过输入框的id或名称访问。


console.log( data ); 显示什么... - Sudhir Bastakoti
它对我有效。你能贴出你的代码吗?同时确保你的输入拥有名称属性。 - pdoherty926
1个回答

5

关于你的代码,有几点需要注意... 首先,test是一个数组,但你却像使用对象一样使用它,如test[element],这可能会导致问题。其次,serializeArray创建了一个包含namevalue的对象数组,因此没有element.val()这个方法。另外,我相信element是DOM元素,所以你要么把它用jQuery包装起来像$(element).val(),要么使用原生属性像element.value,但这仍然不能获取你想要的值。请尝试下面的代码:

var data = $('#myform').serializeArray();
var obj = {};
for (var i = 0, l = data.length; i < l; i++) {
    obj[data[i].name] = data[i].value;
}

Demo: http://jsfiddle.net/elclanrs/KRbPg/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接