如何在jquery中将表单数据作为对象获取

kev*_*vin 59 javascript jquery

我试过了jQuery('#form_id').serialize().这仅返回表单数据作为url编码的字符串.是否可以将表单数据作为对象?

Poi*_*nty 96

你试过"serializeArray"吗?这会为您提供一系列名称和值.如果您想要,可以将其转换为对象:

var paramObj = {};
$.each($('#myForm').serializeArray(), function(_, kv) {
  paramObj[kv.name] = kv.value;
});
Run Code Online (Sandbox Code Playgroud)

(我将不得不再次检查jQuery对数组的作用;我认为它将它们编码为Javascript数组值,但我不是100%肯定.)

编辑啊不,它不会将多值参数设置为数组 - 您将获得相同名称的重复.因此,make-an-object代码应如下所示:

var paramObj = {};
$.each($('#myForm').serializeArray(), function(_, kv) {
  if (paramObj.hasOwnProperty(kv.name)) {
    paramObj[kv.name] = $.makeArray(paramObj[kv.name]);
    paramObj[kv.name].push(kv.value);
  }
  else {
    paramObj[kv.name] = kv.value;
  }
});
Run Code Online (Sandbox Code Playgroud)

(或类似的东西;可能会被挤压一点.)

  • 替代方案:http://github.com/macek/jquery-serialize-object (4认同)

Dar*_*rov 34

您可以查看serializeArray函数:

$('#form_id').serializeArray()
Run Code Online (Sandbox Code Playgroud)

  • 这将返回一个序列化的数组而不是一个对象。 (3认同)