Запрос AJAX отправляет данные пустой формы в PHP

Это код, который отправляет данные в базу данных. Он работает правильно, когда я заполняю поле формы и нажимаю кнопку «Добавить запись». Он успешно вставляет данные в базу данных.

Однако основная проблема заключается в том, что если поле формы пусто, а затем я нажимаю кнопку, оно отправляет пустые данные в базу данных.

function addRecord() {
  var formData = new FormData($("#form1")[0]); //It automatically collects all fields from form
  $.ajax({
    url: "ajax/EditDeleteLecture.php",
    type: "post",
    data: formData,
    async: false,
    cache: false,
    contentType: false,
    processData: false,
    success: function(output) {
      alertify.set('notifier', 'delay', 3);
      alertify.set('notifier', 'position', 'top-right');
      alertify.success('Data Inserted Successfully');
      readRecords();
      $('#form1').trigger("reset");
    }
  });
}

В ajax/EditDeleteLecture.php сделайте print_r($_POST); и опубликуйте вывод здесь.

ugh StackExchange 23.10.2018 12:21
if the form field is empty and then I click the button, it sends empty data to the database Это стандартное поведение. Ваша проблема в том, что вы хотите проверить, что все поля заполнены, прежде чем разрешить отправку формы? Также удалить async: false. Это ужасная практика, и в этом нет необходимости, поскольку вы правильно используете шаблон обратного вызова.
Rory McCrossan 23.10.2018 12:21

добавить атрибут required во входной тег, например <input type = "text" name = "first_name" required >. также вы можете использовать javascript и jquery для проверки перед отправкой запроса ajax

Bilal Ahmed 23.10.2018 12:21

вам нужно проверить, пусты ли данные в вашем файле php.

Sfili_81 23.10.2018 12:23

потому что вы не обрабатываете и не проверяете пустые значения

Dipali Sakle Systematix 23.10.2018 12:23

проверьте свои данные в bakcend или во внешнем интерфейсе.

DPS 23.10.2018 12:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
509
3

Ответы 3

у вас есть 3 места, где вы можете решить проблему с пустыми данными перед сохранением в базу данных

1- Поместите обязательный атрибут в свои элементы ввода, чтобы пользователь не мог отправлять пустые поля.

2- проверьте данные формы в функции java-скрипта addRecord () перед выполнением запроса ajax. если проверка завершена, отправьте пользователю вызов ajax, иначе покажите сообщение, чтобы заполнить данные.

3- проверьте свои данные, которые вы получили в переменной $ _POST, и если поля пусты, отправьте сообщение об ошибке обратно в ответе ajax и покажите ошибку пользователю.

Как я могу это проверить?

John Merry 23.10.2018 12:41

введите необходимые теги ввода формы, например <input type = "text" name = "fieldname" required>

Asad Rehman 23.10.2018 12:50

Обязательно установите для свойства contentType значение "application/x-www-form-urlencoded", чтобы проанализировать это на внутреннем сервере.

Когда вы получаете значение данных формы, в то время как значение поля формы должно быть пустым или нет ... или использовать данные print_r ($ _ POST) ..

/ * при отправке моей формы * /

  $( '#myform' ).submit(function() {

               var errors = [];

        /*     else if Textarea is empty display message error */
               if ($('#myform textarea').val()= = "") {  
                    errors[errors.length] = 'enter your message';
                }

        /*      if radio button is not being selected display message error */
                if (!$(":radio:checked").attr('checked')) {
                   errors[errors.length] = 'select a radio';
                }

                if (errors.length > 0){
                    var errMsg = "Please "

                    for(e = 0; e < errors.length-1; e++){
                        errMsg += errors[e]+", ";
                    }

                     errMsg = errMsg.substr(0, errMsg.length -2)+" and "+errors[errors.length-1];
                     $('#errors').empty().text(errMsg);
                     return false;
                }

        /*          Everthing is good display success message and add SENDING class to submit button */
                    else {
                        $('#myform :submit').addClass('sending').html('Sending message...');
                        $('#errors').empty().text('All Good :D');
                    }
                return false;
            });
        });

Другие вопросы по теме