Как отправлять и запрашивать данные в метод контроллера в Laravel, используя многоступенчатые формы jQuery и bootstrap?

#jquery #laravel-5 #phpmyadmin

#jquery #laravel-5 #phpmyadmin

Вопрос:

Я хочу отправлять данные многоступенчатой формы в метод контроллера при нажатии кнопки сохранить, а затем запрашивать эти данные в методе контроллера с помощью Jquery. Я попробовал несколько шагов, но даже кнопка, похоже, ничего не делает.

У меня есть этот маршрут для хранения данных лечения.

 Route::post('/patients/{patient}/medications','PatientMedicationsController@store')->name('saveTreatment')->middleware('auth');
  

Это некоторые идентификаторы моих полей, данные которых я хочу сохранить.

 heartRate, bloodPressure, otherFindings, duration
  

И идентификатор кнопки отправки — save .
у меня есть этот код Jquery в моем представлении блейда.

 <script>
    $(document).ready( function() {
    $('#save').click( function () {
    $.ajax({
        url:("route('saveTreatment')"),
        type: 'POST',
        data: {'submit': true},
        success: function () {
            alert('Treatment has been saved');
           }
         });
       });
   });
</script>
  

Метод контроллера для хранения — это store .

Я хочу, чтобы данные многоступенчатой формы были получены методом контроллера, а затем сохранены в базе данных.

Ответ №1:

Вам необходимо указать маршрут в синтаксисе блейда в вашем ajax-вызове:

 {{ route('saveTreatment', $patient->id) }}
  

Таким образом, весь вызов ajax будет выглядеть следующим образом:

 $(document).ready( function() {
    $('#save').click( function () {
    $.ajax({
        url:("{{ route('saveTreatment', $patient->id) }}"),
        type: 'POST',
        data: {'submit': true},
        success: function () {
            alert('Treatment has been saved');
           }
         });
    });
});
  

Если ваш вызов ajax выполняется в отдельном файле, вы могли бы добавить атрибут данных в форму, такой как data-ajax-url=»{{ route(‘saveTreatment’, $patient-> id) }}».

Тогда ваш вызов ajax будет выглядеть следующим образом:

 $(document).ready( function() {
    $('#save').click( function () {
    $.ajax({
        url:($('.form-class').attr('data-ajax-url')),
        type: 'POST',
        data: {'submit': true},
        success: function () {
            alert('Treatment has been saved');
           }
         });
    });
});
  

Вы также могли бы просто записать URL как:

 url:("/patients/"   {{ $patient->id }}   "/medications"),
  

Вам также необходимо убедиться, что любое возвращаемое значение от контроллера завернуто в json_encode();

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

1. Мой вызов ajax находится в моем блейд-файле, где находится форма, но теперь у меня возникает эта проблема Missing required parameters for [Route: saveTreatment] [URI: patients/{patient}/medications]. (View: C:wamp64wwwKVSresourcesviewspatientsshow.blade.php) после изменения на это. $(document).ready( function() { $('#save').click( function () { $.ajax({ url:($('.form-class').attr('data-ajax-url')), type: 'POST', data: {'submit': true}, success: function () { alert('Treatment saved'); } }); }); });

2. Прошу прощения, методу route необходим второй параметр, который был бы идентификатором пациента, поэтому атрибутом данных в форме должен быть data-ajax-url=»{{ route(‘saveTreatment’, $patient->id) }}»