Передать статическое значение параметра выбора в контроллер Laravel с помощью AJAX / Axios

#javascript #php #jquery #ajax #laravel

#javascript #php #jquery #ajax #laravel

Вопрос:

Я хочу вызвать значение параметра выбора в условие laravel, и я хочу знать, как его использовать в моем create.blade.php , вот пример:

 @if (a is selected)
   // code goes here
@endif
 

a значение параметра выбора

В настоящее время я использую ajax для преобразования значения html в значение php, но все еще не работаю. Как мне его передать?


Вот мой код параметра выбора в create.blade.php

 <div class="form-group">
   <p class="card-text">Jenis Jadwal </p>
   <div class="">
      <select class="form-control" id="frm-status" name="status">
         <option value="">PIlih</option>
         <option value="rutin" {{ old('status') == 'rutin' ? 'selected' : '' }}>Rutin</option>
         <option value="khusus" {{ old('status') == 'khusus' ? 'selected' : '' }}>Khusus</option>
         <option value="libur-tahunan" {{ old('status') == 'libur-tahunan' ? 'selected' : '' }}>Libur Tahunan</option>
         <option value="nge-plus" {{ old('status') == 'nge-plus' ? 'selected' : '' }}>Nge-plus</option>
      </select>
   </div>
</div>
 

Вот мой сценарий ajax в create.blade.php

 <script type="text/javascript">

            $(function() {

                $('#colorpicker').farbtastic('#warna');

                // run on change for the selectbox
                $( "#frm-status" ).change(function() {
                    updateStatusDivs();
                });

                // handle the updating of the duration divs
                function updateStatusDivs() {
                    // hide all form-duration-divs
                    $('.form-status-div').hide();

                    var divKey = $( "#frm-status option:selected" ).val();
                    var getStatus = null;
                    $('#divFrm' divKey).show();

                    if (divKey === "khusus") {
                        $('#divFrmtanggal').show();
                        $('#divFrmjadwal').show();
                        $('#divFrmcheckbox').hide();
                        getStatus = "khusus"
                    } else if (divKey === "nge-plus"){
                        $('#divFrmtanggal').show();
                        $('#divFrmcheckbox').show();
                        getStatus = "nge-plus"
                    } else if (divKey === "libur-tahunan"){
                        $('#divFrmtanggal').show();
                        $('#divFrmcheckbox').show();
                        getStatus = "libur-tahunan"
                    } else if (divKey === "rutin"){
                        getStatus = "rutin"
                    };

                    $.ajax({
                        url: '/jadwal/tablekaryawanajax',
                        type: 'POST',
                        data: {
                            name: getStatus
                        },
                        success: function(data) {
                            console.log(data);
                        },
                        error: function() {
                            console.log('error');
                        }
                    });
                };

                // run at load, for the currently selected div to show up
                updateStatusDivs();

            });
</script>
 

Вот мой маршрут для tablekaryawanajax (другие маршруты в этой группе не имеют значения, поэтому я их исключаю)

 Route::group(['prefix' => 'jadwal'], function () {
   Route::post('tablekaryawanajax', 'JadwalController@tablekaryawanajax')->name('jadwal.tablekaryawanajax');
});
 

Вот моя tablekaryawanajax функция в JadwalController.php

 public function tablekaryawanajax(Request $request)
{
   return view('Jadwal.karyawantable', compact('karyawan'));
}
 

Комментарии:

1. Вы получаете статус после ответа ajax. Таким образом, вы не можете сделать это с помощью серверного языка. Ajax будет вызываться после завершения процесса серверной части. Вам нужно сделать это с помощью javascript, а не с помощью php

2. Я понял вашу точку зрения, но есть ли у вас какие-либо идеи, как их исправить? возможно, загрузить опцию выбора перед загрузкой create blade?

3. Да, передайте переменную с помощью вашего контроллера, затем выберите поле с переменной php