#javascript #jquery #ajax #laravel
#javascript #jquery #ajax #laravel
Вопрос:
У меня есть эта форма (показывающая только основные части):
<form id="formservicos" method="POST" action="#" class="special-contact-form">
<input type="button" id="sendServicos" value="Enviar" class="btn v-btn v-third-dark submit-contact">
Тогда у меня есть этот JavaScript:
$("#sendServicos").on('click', function(e){
e.preventDefault();
var agree = $('#agree_1');
if( agree.is(':checked')) {
var form = $("#formservicos");
var data = form.serialize();
$.post( form.attr('action'), data, function (r) {
if (!r.success) {
$('#formservicos .alert-danger').text(r.message);
$('#formservicos .alert-danger').removeClass('hidden');
} else {
$('#formservicos .alert-success').removeClass('hidden');
form.closest('form').find("input[type=text], textarea").val("");
}
setTimeout(function(){
$('#formservicos .alert').addClass('hidden');
}, 5000);
grecaptcha.reset();
});
}else{
alert('Tem de concordar com o envio dos seus dados pessoais');
}
});
Как я могу узнать, какой контроллер обрабатывает эти данные?
Комментарии:
1. вы должны указать маршрут в вашем ajax, и во всем вашем скрипте маршрутизации нет
2. @AmirJani Если я введу в консоль ‘r’ функции, я получу это: {успех: false, сообщение: «Пытаюсь получить свойство, не являющееся объектом»}
3. @RicardoBarbosa Он отправляет запрос на ту же ссылку, по которой вы сейчас переходите в строке браузера
Ответ №1:
если действие не указано. Он отправляет все данные на текущую страницу. Эта страница (get) находится в файле маршрута, поэтому добавьте post рядом с ней. Например, вы открываете эту страницу с:
Route::get('/form', 'FormController@index');
затем добавьте Route::post('/form', 'FormController@index');
Комментарии:
1. Маршруты расположены следующим образом: // Маршрут загрузки пользовательских страниц:: group([‘middleware’ => [‘visit’]]], function () { // Маршрут отображения содержимого::any(‘/{slug?}’, ‘SiteController@showContent’); });
2. Route::post(‘/form’, ‘FormController@index’); измените на Route ::post(‘/form’, ‘FormController@post’); создайте метод post в вашем FormController и попробуйте войти в этот контроллер. вы также можете Route::post(‘/form’, ‘FormController@index’)->name(‘myformpost’); и использовать <идентификатор формы=»formservicos» метод=»POST» action=»{{маршрут (‘myformpost’)}}» class=»специальная контактная форма»> в качестве действия. в противном случае ваш метод index пытается обработать как «отображение формы», так и «обработку записи формы»
3. Да, @Cameron был прав. Это правильный способ сделать это. Но если вы используете Route::any (…), мой ответ идеально подходит для вас. Вы должны обрабатывать post в той же функции. Это не самый идеальный ответ, но он работает.