Jquery将序列化数据放入数组中

时间:2012-09-14 05:40:50

标签: jquery arrays serialization each

我想从表单中获取所有数据并将其放入可访问的数组中。这是我到目前为止所做的:

var data = $("#everything").serializeArray();
var test = [];
$(data).each(function(index, element) {
    test[element] = element.val();
});

我试过了:

alert(data["fname"]);

但即使文本框中有某些内容,也会返回“未定义”,这就是为什么我必须这样做。每种方法。但现在我做的时候

alert(test["fname"]);

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

1 个答案:

答案 0 :(得分:5)

关于您的代码的一些事项......首先test是一个数组,但您将其用作test[element]之类的对象,这会带来麻烦。然后serializeArray创建一个对象数组,每个对象包含namevalue,因此没有element.val(),而且我很确定element是DOM元素所以你必须将它包装在像$(element).val()这样的jQuery中,或者使用像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;
}

演示: http://jsfiddle.net/elclanrs/KRbPg/