更新:将 AJAX 的 JSON 数据应用于现有复选框和 checking/unchecking (jQuery)

UPDATED: Applying AJAX'd JSON data to existing checkboxes and checking/unchecking (jQuery)

这个问题已经清理干净,不再像以前那么罗嗦了。希望对你有帮助。

网络堆栈:ColdFusion 12+/Lucee 5.x
数据库:mySQL/Maria
车把也在这里发挥作用,但我认为与这个问题没有任何关系。

我有一个包含三个部分的表格:
第一部分是一系列复选框
第二部分是一系列单选按钮
第三部分是另一组复选框

当第一部分中的某些复选框被选中并且单选按钮被 select 编辑时,将对数据库进行 ajax 调用以检索对应的复选框的 "active" 值到第三部分的复选框。第三部分中的整个复选框列表应始终可见,因为用户可以根据需要添加其他 selections/deselections。

希望这个例子能有所帮助:

第一节

CHECKBOX 1 [X]      CHECKBOX 2 [ ]      CHECKBOX 3 [ ]      CHECKBOX 4 [X]  

第二部分

RADIO 20 ( )      RADIO 21 ( )      RADIO 22 (*)      RADIO 23 ( )      RADIO 24 ( )  

因此,根据上面 selected 的选项,将向用户显示以下内容,但用户仍可以根据需要进行更改。
第三节

CHECKBOX 101 [X]      CHECKBOX 102 [ ]      CHECKBOX 103 [ ]      CHECKBOX 104 [ ]      CHECKBOX 105 [x]      CHECKBOX 106 [X]  

我还没有代码可以分享,因为我刚刚开始这个应用程序领域,但如果有人愿意与我一起工作,我可以 post 代码(and/or gist) 随着我的进行。我怀疑这个 SO 问题需要一些时间才能将答案标记为正确,所以只知道继续前进。我认为这将是一个有趣的练习,我期待反馈。

=============给场景一些背景=============
假设这是 am "ideal mate personality profile"(不是,但让我们假装在这里)。使用上面提供的示例布局,第 1 部分有 4 个物理属性复选框(头发颜色、眼睛颜色、身材等)。然后第 2 部分是完成的教育(你希望你的理想伴侣有多聪明)。作为开发人员,我假设如果用户 select 在第 1 节中选择了 1 和 4 的复选框,然后在第 2 节中选择了无线电 22(智能)的无线电选项,那么他们可能 select 复选框 101、105 和 106(坚定、机智和健谈)所以为了方便起见,我想为他们勾选这些选项。如果用户将第 2 部分中的 selection 从 Radio 22(智能)更改为 Radio 24(图表外智能),则第 3 部分中选中的项目将更改以匹配预定映射。

数据库有两个 table 数据 - 源数据显示 checkboxes/radio 选项的选项,然后第二个 table 显示映射(见下图).

我的问题本质上是如何将映射值应用于页面上已加载的数据?在伪代码中:
- 检索 JSON 映射数据值
- 遍历 DOM 元素,将现有项目与 ajax 调用
返回的值进行比较 - 如果匹配,勾选方框
- 如果不匹配,请保持原样,以防用户 select 选中复选框

这里没什么特别的,只是将返回的数据应用于现有数据并进行检查。简单易行。

注意:这不是我的实现的逐字记录,也不值得复制和粘贴;但是,它回答了我的问题,足以用于政府工作。

var formData = $("#myRighteousForm :not(.exclude)").serialize();
$.ajax({
    method: "POST",
    url: "/?action=card.getData",
    dataType: "JSON",
    data: formData   
}).then(
    function(response) {
        $.each(response.data, function(key, value) {
            $('#id_' + value.thisLabel + ':checkbox').prop('checked', true); 
        });
    }
);