将元素/值的选择转换为assoc array / json字符串

时间:2014-08-21 21:43:56

标签: jquery json

我需要保存/检索从网页到PHP到MySQL的一系列复选框/值,然后再返回。

在MySQL中,它们将存储为JSON字符串,如下所示:{"cb1":0,"cb2":0,"cb3":1,"cb4":0}

除了(1)将复选框+ vals读入数组,然后(2)将其转换回JSON字符串(如上所示)之外,一切正常。

Display JSON List (#display_all)按钮需要救援。

Here is a jsFiddle

示例HTML:

<div id="chkbox"></div>
<input type="button" id="create_cb" value="Create Checkboxes" />
<input type="button" id="mybutt" value="Add New Checkbox" />
<input type="button" id="display_all" value="Display JSON list" />

示例JS:

var chk, json = '{"cb1":0,"cb2":0,"cb3":1,"cb4":0}';

$('#create_cb').click(function(){
    var arrJson = JSON && JSON.parse(json) || $.parseJSON(json);
    for(key in arrJson){
        chk = (arrJson[key]==1)? 'checked="checked"' : '';
        $('#chkbox').append(key +': <input id="'+key+'" type="checkbox" '+chk+' /> ');
    }
    $(this).hide();
    $('#display_all').show();
});

$('#display_all').click(function(){
    var arrCB = $("#chkbox>input[type='checkbox']").map(function(){return this.value;});
    var text = JSON.stringify(arrCB);
    alert(text);
});

我已经审核了以下SO帖子,但在我的案例中无法解决如何使用这些解决方案。

How can I send checkboxes data into JSON array?

JQuery: Turn array input values into a string optimization

修改

我从thisthis了解到术语&#34;关联数组&#34;是不正确的。我真的在创建一个具有多个属性的对象。但是,最常用的术语表达了所需的字符串化结果。

1 个答案:

答案 0 :(得分:1)

将您的arrCB创建为匿名对象,然后遍历您的复选框并将其ID分配给arrCB:

$('#display_all').click(function(){
    var arrCB = {};
    $("#chkbox>input[type='checkbox']").each(function(){ 
        var el = $(this);
        var id = el.attr('id');
        arrCB[id] = (this.checked ? 1 : 0)
    });
    var text = JSON.stringify(arrCB);
    alert(text);
});

小提琴:http://jsfiddle.net/k20mug9y/2/