Как узнать, куда перенаправляется и какой контроллер обрабатывает данные

#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 в той же функции. Это не самый идеальный ответ, но он работает.