javascript/jQuery: 怎么动态地将属性值转换为对象的键?

35 浏览
0 Comments

javascript/jQuery: 怎么动态地将属性值转换为对象的键?

这个问题已经有了答案

可能是重复问题:

使用jQuery将表单数据转换为JS对象

这是我的问题,我有许多像这样的元素...





每个元素都有相应的JSON形式的\"data-key\"和\"data-item\",看起来像这样...

{
    "measurements" : {"sleeve_length" : value, "inseam" : value},

每个\"data-item\"都是唯一的...并且当不是这样时像这样...

    "contact_details" : [
                             {"email" : value, "mobileNo" : value},
                             {"email" : value, "mobileNo" : value}
                        ]
}

现在,因为我的Web应用程序涉及许多表单,我需要一种动态转换上面的标记为这些JSON字符串的方法...但我似乎无法理解它!

有人有任何想法可以帮助我解决这个问题吗?

admin 更改状态以发布 2023年5月20日
0
0 Comments

你可以让一些JS MVC / MVVC库来为你做这个。例如,Knockout。我自己还没有使用过它,但从一瞥它看起来很不错。你定义 JSON 对象和 HTML 表单字段之间的映射,该库将监视表单字段并更新 JSON 对象(一个“视图模型”)。

0
0 Comments

大致就像这样:

var json = {};
$('#path .to input').each(function(e) {
    var key = $(this).attr('data-key');
    var param = $(this).attr('data-item');
    var obj = {};
    obj[param] = $(this).val();
    // If we already have a record...
    if(key in json) {
        // If it's not an array, make it an array
        if(typeof(json[key].push) != 'function')
            json[key] = [ json[key] ];
        // Toss it on the pile
        json[key].push(obj);
    } else {
        // There's only 1 thus far, keep it k/v
        json[key] = obj;
    }
});

等等。相当基础,重点就是测试你所工作的关键字是否存在,如果存在,就将其转换为数组。

编辑:这未经测试,但应该可以工作。

编辑2:修改代码,使你的哈希关键字变量不会被识别为字符串。

0