JSON 数组导致开机自检后出现额外的括号

JSON array causing extra bracket after POST

本文关键字:数组 开机自检 JSON      更新时间:2023-09-26

我正在自由标记中编写一个函数来循环遍历所有选中的复选框,然后在同一表单上重新填充相同的响应。表单是自由标记格式,我正在使用JS为每个包含复选框的类别创建一个单独的数组。代码如下:

.HTML:

<input type="checkbox" class="checkBox" value="United Kingdom" name="holidays" />
<input type="checkbox" class="checkBox" value="Australia" name="holidays" />
<input type="checkbox" class="checkBox" value="United States" name="holidays" />
<input type="checkbox" class="checkBox" value="Asia" name="holidays" />
<input type="checkbox" class="checkBox" value="United Kingdom" name="flights" />
<input type="checkbox" class="checkBox" value="Australia" name="flights" />
<input type="checkbox" class="checkBox" value="United States" name="flights" />
<input type="checkbox" class="checkBox" value="Asia" name="flights" />

.JS:

    var extraObjs = {};
    if(validated) {
    $(formRef).find('input[type=text],input[type=password]').each(function() {
        var obj = $(this);
        extraObjs[obj.attr('name')] = obj.val();
    });
    $(formRef).find('input[type=radio]:checked, input[type=checkbox]:checked').each(function() {
        var obj = $(this);
        if(obj.is('[type="checkbox"]')) {
            if(typeof extraObjs[obj.attr('name')] !== 'object') {
                extraObjs[obj.attr('name')] = [];
            }
            extraObjs[obj.attr('name')].push(obj.val());
        } else {
            extraObjs[obj.attr('name')] = obj.val();
        }
    });
    return extraObjs;
} else {
    return false;
}

问题是,当信息通过 POST 发送时,显示的结果是:

flights[] ["United Kingdom", "Asia"]
holidays[] ["United Kingdom", "Asia"]

似乎额外的括号导致了问题

如果你尝试,你能看看你是否得到想要的结果吗

return JSON.stringify(extraObjs);