首页 > 解决方案 > 如何以 select2 数组形式检索或选择旧值?

问题描述

这是我的动态输入表单,我使用 select2 作为地址。但问题是如何在数组中的 select2 中检索旧值?

在此处输入图像描述

我想在联系地址(Select2)中检索旧值。这是我的路线

  Route::get('/getAllAddress','AddressController@getAllAddress')->name('getAllAddress');

这是我的控制器功能。当我执行 dd($selected) 时,数据以数组形式出现,所以我想检查数组;

public function getAllAddress(){
 $q = $request->q ?? '';

    $selected = $request->selected ?? ''; 
        
        $addresses= Address::select('id','name')
           ->orderBy('name')
           ->where(function($query) use ($selected,$q) {
               if($selected)  $query->where('id', '=', $selected); // i want to check those array data and return to the ajax 
              
           })
           ->get()
           ->map(function($items){
               $data['id'] = $items->id;

               $data['text'] =  $items->name;

               return $data;
           });
        return response()->json(['results' => $addresses]);
}

这是我的 AJAX。当我执行 console.log(selected) 时,231 和 332 数据即将到来

$(window).on('load', function(){
    initAjaxSelect($(this));
});
function initAjaxSelect($this){
   
    $('.addresses').select2({
      ajax: {
            url: 'getAllAddress',
            dataType: 'json',
            data: function (params) {
                var query = {
                    q: params.term,
                }
                return query;
            }
        },
       
    });
    
    
   var selected= $("select[name='contact_address[]']")
        .map(function(){
            return $(this).attr('data-selected');
        })
        .get();
   console.log(selected)// When i do console.log(selected) then 231 and 332 data are coming
   if(selected){
       $.ajax({
           type: 'GET',
           url: ajax,
           data: {selected: selected}
       }).then(function (data) {
           var option = new Option(data.results[0].text, data.results[0].id, true, true);
           $("select[name='contact_address[]']").append(option).trigger('change');
       });
   }

   
}

这是我的html

<tr>
   <td></td>
   <td></td>
   <td></td>
   <td>
     <select class="addresses form-control" name="contact_address[]" 
         data-selected="{{old('contact_address',  $contact->contact_address ?? null) }}>
     </select>
   </td>
</tr>

标签: javascripthtmljqueryajaxlaravel

解决方案


推荐阅读