#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) }}»