将JavaScript的jQuery库中表单转化为JSON对象的方法可以使用jQuery中的serializeArray()
方法实现。
- 第一步:选择表单元素
首先需要使用jQuery的选择器选择表单元素,例如:
var $form = $('form');
- 第二步:使用serializeArray()方法将表单数据序列化为数组
var formArray = $form.serializeArray();
serializeArray()
方法将表单元素中的值序列化为一个数组。返回的数组包含每个表单元素的名称和值。
- 第三步:将数组转化为JSON对象
var formObj = {};
jQuery.each(formArray, function() {
formObj[this.name] = this.value;
});
上面的代码会将数组循环遍历并以名称/值对的形式添加到JSON对象formObj
中。
使用示例1:
假设我们有一个表单:
<form id="myform">
<input type="text" name="foo" value="bar">
<input type="text" name="hello" value="world">
</form>
我们可以使用以下代码将其转换为JSON对象:
var $form = $('#myform');
var formArray = $form.serializeArray();
var formObj = {};
jQuery.each(formArray, function() {
formObj[this.name] = this.value;
});
console.log(formObj);
输出结果为:
{ foo: "bar", hello: "world" }
使用示例2:
假设我们有一个动态生成的表单:
<form id="myform">
<input type="text" name="foo" value="bar">
<input type="text" name="hello" value="world">
<input type="checkbox" name="check[]" value="1" checked>
<input type="checkbox" name="check[]" value="2" checked>
<input type="checkbox" name="check[]" value="3">
</form>
我们使用以下代码将其转换为JSON对象:
var $form = $('#myform');
var formArray = $form.serializeArray();
var formObj = {};
jQuery.each(formArray, function() {
if (formObj[this.name] !== undefined) {
if (!formObj[this.name].push) {
formObj[this.name] = [formObj[this.name]];
}
formObj[this.name].push(this.value || '');
} else {
formObj[this.name] = this.value || '';
}
});
console.log(formObj);
输出结果为:
{ foo: "bar", hello: "world", check: ["1", "2", "3"] }
需要注意的是,如果表单中有多个name相同的元素,serializeArray()
方法不会合并它们的值。因此,我们需要手动合并它们的值,而上述代码就是一个可以合并checkbox的示例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:将JavaScript的jQuery库中表单转化为JSON对象的方法 - Python技术站