You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编辑记录时如何高亮Modal中数据库选中项?无法获取acomp_types列表

解决Modal中无法高亮Ajax返回的选中项问题

你的问题核心在于Ajax返回的是对象数组,而你直接用$.inArray去匹配ID值,导致无法找到对应项。

返回的响应数据结构是:

[{"acomp_type_id":"1"},{"acomp_type_id":"2"},{"acomp_type_id":"3"},{"acomp_type_id":"4"},{"acomp_type_id":"5"},{"acomp_type_id":"6"},{"acomp_type_id":"7"},{"acomp_type_id":"8"},{"acomp_type_id":"9"}]

$.inArray(item_id, selected_items)是在数组中查找值是否存在,但selected_items里的每一项都是包含acomp_type_id属性的对象,不是纯ID字符串/数字,所以永远匹配不到目标项。

修复方案(两种可选)

方案一:前端处理返回数据

在Ajax的success回调中,先将对象数组转换为纯ID数组,再进行匹配:

修改后的前端代码:

$('#modal_form').on('shown.bs.modal', function () { 
    var myID = id;
    $.ajax({
        url : "<?php echo base_url('index.php/tourist_facilities/highlight_selected_items')?>/",
        type: "GET",
        dataType: "json",
        data:{id:myID},
        success: function(selected_items) {
            // 将对象数组转换为纯ID数组
            var selectedIds = selected_items.map(item => item.acomp_type_id);
            
            var $acomp_types = $("#modal_form").find(".acomp_types");
            $acomp_types.each(function() {
                var item_id = $(this).data("acomp_type_id");
                // 统一类型:将data获取的ID转为字符串,和返回值保持一致
                item_id = String(item_id);
                if ($.inArray(item_id, selectedIds) !== -1) {
                    $(this).addClass("selected");
                }
            });
        }
    });
});

方案二:后端直接返回ID数组(更高效)

修改后端函数,直接提取acomp_type_id组成纯数组再返回,减少前端处理步骤:

修改后的后端代码:

public function highlight_selected_items() {
    $id = $this->input->get('id'); 
    $query_result = $this->db->query("SELECT acomp_type_id FROM tourist_accompanying_types where tf_ID=$id")->result_array();
    // 提取acomp_type_id字段,组成纯ID数组
    $selected_items = array_column($query_result, 'acomp_type_id');
    echo json_encode($selected_items);
}

修改后返回的响应会变成纯ID数组:["1","2","3","4","5","6","7","8","9"],此时你原来的前端代码中的$.inArray就能正常匹配了。

额外注意事项

  • 确保.acomp_types元素的data-acomp_type_id属性值与返回的ID类型一致(均为字符串或均为数字),避免因类型不匹配导致匹配失败。
  • 代码中冗余的$(this).attr("data-selected_item", item_id);可以删除,这行对高亮逻辑没有帮助。

内容的提问来源于stack exchange,提问作者Wesam Beshir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 09:09:58