Ajax с Laravel Форма Коллектив - PullRequest
0 голосов
/ 08 января 2020
{!! Form::select('jobsList[]', $list_of_jobs, null, ['id' => 'job', 'class' => 'form-control' 'multiple', 'style' => 'width: 60%; margin-top: 10px;', 'disabled'=>'disabled']) !!}

У меня есть эта форма, и я пытаюсь загрузить $ list_of_jobs асинхронно по сравнению с тем, что я делаю. Я немного смущен тем, как работает LaravelCollective Form. Кто-нибудь может указать, как я это передам? У меня уже есть ajax вызов, который идет и забирает $ list_of_jobs из контроллера

1 Ответ

2 голосов
/ 08 января 2020
//...
{!! Form::select('jobsList[]', [], null, ['id' => 'job', 'class' => 'form-control' 'multiple', 'style' => 'width: 60%; margin-top: 10px;', 'disabled'=>'disabled']) !!}
..//

Заполнение поля выбора с помощью JQUERY, AJAX

<script>
    $(document).ready(function() {

            //Make an Ajax request to a Laravel route
            //This will return the data that we can add to our Select element.
            $.ajax({
                url: 'YOUR URL GOES HERE',
                type: 'get',
                success: function(data){

                    //Log the data to the console so that
                    //you can get a better view of what the script is returning.
                    console.log(data);

                    $.each(data, function(key, value){
                        //Use the Option() constructor to create a new HTMLOptionElement.
                        var option = new Option(key, value);
                        //Convert the HTMLOptionElement into a JQuery object that can be used with the append method.
                        $(option).html(value);
                        //Append the option to our Select element.
                        $("#job").append(option);
                    });

                }
            });

        });
</script>

data должно быть массивом объектов [{}, {}, {}]

[
  {'key' : 'foo', 'value' => 'bar'}, 
  {'key' : 'kosksi', 'value' => 'makrouna'}, 
  {'key' : 'lablebi', 'value' => 'kafteji'}
]

Обновление

Если вы хотите установить выбранное значение option(s) при заполнении поля выбора: вам нужно вернуть дополнительный атрибут selected : true|false в каждом объекте сбора данных

[
  {'key' : 'foo', 'value' : 'bar', 'selected' : false}, 
  {'key' : 'kosksi', 'value' : 'makrouna', 'selected' : false}, 
  {'key' : 'lablebi', 'value' : 'kafteji', 'selected' : true}
]

Затем в success() ajax функция обратного вызова

//...
$.each(data, function(key, elem){
  //Use the Option() constructor to create a new HTMLOptionElement.            
  var option = new Option(elem.value, elem.key, false, elem.selected);
  //Convert the HTMLOptionElement into a JQuery object that can be used with the append method.
  $(option).html(elem.value);
  //Append the option to our Select element.
  $("#job").append(option);
});
//...
...