2017-12-27 32 views
1

저는 취업 허가서에 여러 명의 직원을 추가하는 데 사용되는 select2가 있습니다. 직원을 추가해도 문제는 없지만 허가가 표시되면 추가 직원을 select2에서 미리 선택해야합니다. JSON 문자열을 사용하여 아약스를 통해 DB에서 값을 검색 할 수 있지만 select2는 다중 선택이 아닌 한 번에 하나씩 각 값을 표시합니다. select2가 생성되면 multiple이 true로 설정됩니다.JSON 문자열로 Select2 선택 값을 설정하십시오.

내 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> 

내 선택 2 초기화 코드가

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

아래 아래로 내 아약스 코드는 아래입니다. 아래의 코드처럼, (https://select2.org/programmatic-control/add-select-clear-items#selecting-options 참조) val() 기능을 선택 2 할 배열을 전달해야한다 :

$.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); 
+0

[코드의 전체, 최소한을 검증 할 수있는 예제] (https://stackoverflow.com/help/mcve)를 공유하십시오. – beaver

답변

0

문제는 아약스 요청의 성공 핸들러에 아래 : https://jsfiddle.net/beaver71/h92jmy2w/

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

는 작업 jsfiddle입니다

오후 : 에코 기능을 통해 아약스를 시뮬레이트합니다.