使用JSON字符串设置Select2选定值

问题描述 投票:1回答:1

我有一个select2用于将多个员工添加到工作许可证中。添加员工没有问题,但是当查看许可证时,我需要在select2上预先选择添加的员工。我可以使用JSON字符串通过ajax从DB检索值,但select2一次只显示一个值而不是多选。生成select2时,Multiple设置为true。

我的HTML页面代码如下

<legend><h5 class="text-semibold">Employees</h5></legend>
<div class="row">
    <div class="col-md-8 col-md-offset-2">
        <div id="select_employee_div" class="content-group-lg">
            <label class="control-label text-bold">Select Employees *</label>
            <select id="select_employee" class="form-control multi-select-search">

            </select>
        </div>
    </div>
</div>

我的select2初始化代码如下

// Select with search
$('.multi-select-search').select2({
    multiple: true
});

我的ajax代码如下。

$.ajax({
    type: "POST",
    url: 'php_files/permit_php_files/permit_employee_process.php',
    dataType: 'JSON',
    data: {
        permit_id: $('#permit_id').val()
    },
    success: function(data) {

    var my_obj = data;
    $.each(my_obj, function (i, z) {

            $("#select_employee").val(my_obj[i].employee_id).trigger('change');
        });
   }
});

我的PHP代码如下

$stmt = $mysqli->prepare("SELECT employee_id FROM tbl_permit_employee WHERE permit_id = ?");
$stmt->bind_param("i", $permit_id);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($employee_id);
$row_array = array();

while($stmt->fetch()) {
    $tmp = array();
    $tmp['employee_id'] = $employee_id;
    array_push($row_array, $tmp);
}
$stmt->close();

echo json_encode($row_array);
json ajax jquery-select2
1个回答
0
投票

问题在于成功处理ajax请求:你必须将一个数组传递给Select2 val()函数(参见https://select2.org/programmatic-control/add-select-clear-items#selecting-options),如下面的代码所示:

var arr = [];
for (var i in data) {
    arr.push(data[i].employee_id);
}
$("#select_employee").val(arr).trigger('change');

这是一个工作的jsfiddle:https://jsfiddle.net/beaver71/h92jmy2w/

P.S。:ajax通过回声特征模拟

© www.soinside.com 2019 - 2024. All rights reserved.