将带有值数组的json文件创建到键

时间:2015-06-16 11:59:00

标签: javascript jquery json

我在html页面中有很多复选框。我必须将json数据发送到服务器,其中包含所有选中复选框的id的数组以及这些复选框的标签。 我正在考虑使用带有.each()函数的jquery来检查是否选中了复选框,如果选中它,则将其添加到数组中。 我正在寻找的json文件是这样的

{"checkbox id" : [1, 2, 3], "checkbox label" : ["check1", "check2", "check3"]}

4 个答案:

答案 0 :(得分:0)

你可以使用jquery:checked选择器来获取所有选中的复选框..

var checkedCheckBoxes = $("输入:已检查")

jQuery checked selector

答案 1 :(得分:0)

假设这个HTML:

 <label for="checkBox">Label</label>
 <input id="checkBox" type="checkbox" />

我会建议这种形式的json:

var arr = [];
$('input[type="checkbox"]:checked').each(function() {
    var that = $(this);
    var id = that.attr('id');
    var label = $('label[for="' + id + '"]').text();
    var obj = {
       id: id,
       label: label
    }
    arr.push(obj);
});

你会想出这个:

arr = [{id:"1",label:"labelOne"},{ ... }];

答案 2 :(得分:0)

如果您正在寻找一种格式化JSON的方法,我会将选中框中的所有信息放在一个数组中,如下所示:

{
  "checked_boxes" :
    [{"id": "1", "label": "checkbox1"},
     {"id": "2", "label": "checkbox2"},
     {"id": "3", "label": "checkbox3"]
}

答案 3 :(得分:0)

如果要保留json结构,可以执行以下操作:

var ids = [];
var labels = [];

$('input[type="checkbox"]').each(function () {
    if ($(this).is(':checked')) {
        var current_id = $(this).attr('id');
        ids.push(current_id);

        var current_label = $("label[for='" + $(this).attr('id') + "']").text();
        labels.push(current_label);
    }
});

var checkboxes = {
    "checkbox_id": ids,
    "checkbox_label": labels
};

var s_checkboxes = JSON.stringify(checkboxes);

请注意您无法在浏览器中创建json文件。一旦数据被发送,您将不得不在服务器端执行此操作。