Загрузить данные в форму: выберите Laravel, используя Ajax - PullRequest
0 голосов
/ 15 января 2020

Итак, у меня есть эта форма в Blade

{!! Form::select('jobslist[]', $jobs, null, ['id' => 'jobs', 'class' => 'form-control jobs mav-select', 'multiple', 'style' => 'width: 60%; margin-top: 10px;', 'disabled'=>'disabled']) !!`}

Я пытаюсь загрузить данные $ jobs, используя Ajax, поэтому я переписал форму как

{!! Form::select('jobslist[]', [], null, ['id' => 'jobs', 'class' => 'form-control jobs mav-select', 'multiple', 'style' => 'width: 60%; margin-top: 10px;', 'disabled'=>'disabled']) !!}

И добавил загрузку скрипт под

function loadData(card){
            $.ajax({
                type: 'POST',
                url: '/loadJobs/',
                data: {name: card, element: '{{$posting->id}}'},
                dataType: 'json',
                success: function (response) {
                    console.log(response);

                        $("#jobs").html('');
                        $("#jobs").html(response.options);
                     })
                },
                error: function(response){
                    console.log('Error: ', response["responseText"]);
                }
            });
        }

Через консольный журнал я могу убедиться, что я бью контроллер и получаю данные в формате

Object:
options:
27969: "2016-230 :: PL"
27974: "2016-231 :: ML"
27989: "2016-233 :: RF"

как мне передать его в поле выбора?

Ответы [ 3 ]

1 голос
/ 15 января 2020

Вы можете использовать команду append, чтобы добавить элементы для выбора в функции успеха:

success: function(response){
    ...
    $('#jobs').append('<option value='+response.id+'>' +response.name+ '</option>')
    ...
}

Там у вас это есть, просто при необходимости измените «id» и «name», надеюсь, это поможет.

0 голосов
/ 15 января 2020
success: function(data){

            console.log('success');
            console.log(data);
            jobs = data;

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

            /

        },
0 голосов
/ 15 января 2020
//...
success:function(response){

     var len = response.length;

     $("#jobs").empty();
     for( var i = 0; i<len; i++){
          var id = response[i]['id'];
          var name = response[i]['name'];

          $("#jobs").append("<option value='"+id+"'>"+name+"</option>");

     }
}
//...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...