PHP Laravel проблема с отправкой формы - PullRequest
0 голосов
/ 01 августа 2020

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

Теперь я дал кнопку добавления опыта в этом разделе, чтобы он добавлялся в таблицу, и таблица показывалась динамически всякий раз, когда пользователь нажимает кнопку добавления опыта.

В laravel мне не удалось добавить данные в таблицу, поэтому я решил отправить форму через java скрипт, где я получаю данные таблицы, конвертирую их в массив и передаю один json отправьте тело запроса в api, затем извлеките данные в контроллер laravel и сохраните в базе данных.

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

Итак, мой вопрос: есть ли способ сначала обработать запрос в сценарий java, изменить его тело запроса и обычно выполнить api, как и любой другой простой laravel php api или есть более простой способ сделать это?

Совместное использование фрагментов кода из моего кода,

html фрагмент страницы

 <form name="RegistrationForm" id="RegistrationForm">

                                    <label for="from_year" class="col-form-label text-md-left">{{ __('From Year') }}</label>
                                    <select id="from_year" class="form-control" name="from_year"  value="{{ old('from_year') }}" required>

                                        <option value="">Select</option>
                                        <option value="2008">2008</option>
                                        <option value="2009">2009</option>
                                        <option value="2010">2010</option>
                                        <option value="2011">2011</option>

                                    </select>
                                    
                                    
                                    <label for="to_year" class="col-form-label text-md-left">{{ __('To Year') }}</label>
                                    <select id="to_year" class="form-control" name="to_year"  value="{{ old('to_year') }}" required>

                                        <option value="">Select</option>
                                        <option value="2008">2008</option>
                                        <option value="2009">2009</option>
                                        <option value="2010">2010</option>
                                        <option value="2011">2011</option>

                                    </select>
                                    
                                    <button type="submit" id="BtnSubmitForm"  name="BtnSubmitForm" class="btn btn-primary">
                                            {{ __('Submit') }}
                                    </button>

javascript код

 $('#RegistrationForm').submit(function(e) {
    e.preventDefault();

    var mainObj = {};
    
    var total_exp_months = $('#to_year').val();
    var currently_employed = $('#from_year').val();
     
    $("#RegistrationForm").validate({

        rules: {

            to_year: "required",
            from_year: "required"

        },

        messages: {

            to_year: "Please Select option",
            from_year: "Please Select option"
         

        },

    }); 
    
    // Here i get data from table which was added in the form and convert it into json String to pass to the api
    
  $.ajax({

    type: 'POST',
    url: '/register_user',
    data: JSON.stringify(requestStringObj),
    contentType: "application/json",
    success: function(data, status) {

        // success message

    },
    error: function(data, status) {

       // error message

    }
  });

});

Это пример изображения того, как данные добавляются в таблица динамически. Скриншот

1 Ответ

0 голосов
/ 02 августа 2020

Поскольку вы используете ajax для отправки формы, вам необходимо передать токен CSRF в вашем ajax submit. Помните, что по умолчанию CSRF включен в laravel. Ваш ajax должен выглядеть так:

$.ajax({

type: 'POST',
url: '/register_user',
data: JSON.stringify(requestStringObj),
headers: {
   'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
contentType: "application/json",
success: function(data, status) {

    // success message

},
error: function(data, status) {

   // error message

}

});

И включите токен CSRF в метатег вашего заголовка в html.

<meta name="csrf-token" content="{{ csrf_token() }}">

Надеюсь, сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...