Если вы используете ajax, вы можете использовать preventDefault()
, чтобы форма не отправлялась «традиционно».После успешного выполнения ajax вы можете поместить свою логику в функцию успеха.
например,
$("form").submit(function(e){
e.preventDefault();
$.ajax({
method: 'POST' //assume its a post method
url: '{{url(cats)}}', //the route endpoint
data: data //data to be sent
success: function(response) {
// logic goes here, it means form submission is successful
},
error: function(e){
// error has occured
console.log(e)
}
});
});
Убедитесь, что в элементе формы установлено действие на хэштег иудалить метод.Таким образом, он не выполняется традиционно.
например
<form action="#">
Зачем использовать этот подход?
Если вы отправляете форму традиционно, она будетобновите страницу, что означает, что ваш JS на стороне клиента не будет выполнен!Ajax предназначен для асинхронного HTTP-запроса.
Не забудьте
Если вы используете HTTP-методы , отличные от GET , добавьте CSRF TOKEN в заголовки.Вот как вы настраиваете это перед вызовами ajax.
<meta name="csrf-token" content="{{ csrf_token() }}"> //add to head section
//js - before your ajax function, put in script section
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
Удачи!
Ссылка:
https://api.jquery.com/event.preventdefault/
https://api.jquery.com/jQuery.ajax/
https://laravel.com/docs/5.7/csrf