Как отправить две формы одним нажатием кнопки (скрипт ninjaforms id)

Вопрос или проблема

Мне нужно, чтобы пользователь отправлял 2 формы нажатием одной кнопки, поэтому я пытаюсь объединить две кнопки в одну третью, чтобы передать данные, но не знаю, что делаю не так.

Я пытался заставить это решение сработать, но получаю ошибку в консоли:

“uncaught typeerror: cannot read property ‘submit’ of null at
SubmitForms”

Одна из форм создается с помощью ninjaforms, другая – другим плагином… Я не уверен, могу ли я правильно указать/вызвать id ninjaform или его имя. Где можно найти одно из этих значений? Я пробовал много различных вариантов, все с тем же результатом.

Итак, моя (третья) кнопка подключена так:

...
function button() {
echo '<input type="button" name=button class=button value="нажми меня" onclick="submitForms()" />';
}

А вот как выглядит js (в хедере):

    <script>
submitForms = function(){
    document.getElementById("ninja_form_id_2").submit();
    document.getElementById("id_form_2").submit();
}
</script>

Я никогда раньше не использовал javascript, так что не уверен, правильно ли я его внедрил.
Спасибо за помощь!

Я частично украл этот ответ с SO

$("#idForm").submit(function(e) {

var url = "path/to/your/script.php"; // скрипт, в котором вы обрабатываете ввод формы.

$.ajax({
       type: "POST",
       url: url,
       data: {
                 form1: $("#idForm").serialize(),
                 form2: $("#idForm2").serialize()
       },  
                 // сериализует элементы формы.
       success: function(data)
       {
           alert(data); // показать ответ от php скрипта.
       }
     });

e.preventDefault(); // избегайте выполнения фактической отправки формы.
});

Итак, в основном вы предотвращаете обычную отправку ваших форм, сериализуете их содержимое в json и отправляете это в ajax-запрос на сервер.

Ответ или решение

Для того чтобы отправить две формы с одной кнопки, вы можете воспользоваться AJAX-запросом, который обеспечит обработку данных обеих форм на сервере. Рассмотрим поэтапно, как это можно реализовать.

Шаг 1: Подготовьте ваши формы

Убедитесь, что ваши формы имеют уникальные идентификаторы. Например:

<form id="ninja_form_id_2"> 
    <!-- Поля формы Ninja Forms -->
</form>

<form id="id_form_2"> 
    <!-- Поля второй формы -->
</form>

<input type="button" name="button" class="button" value="Click Me" onclick="submitForms()" />

Шаг 2: Напишите JavaScript для отправки обеих форм

Вам нужно написать функцию, которая будет сериализовать данные этих форм и отправлять их с помощью AJAX:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
function submitForms() {
    var formData1 = $("#ninja_form_id_2").serialize(); // Сериализуем первую форму
    var formData2 = $("#id_form_2").serialize(); // Сериализуем вторую форму

    $.ajax({
        type: "POST",
        url: "path/to/your/script.php", // Путь к вашему серверному скрипту
        data: {
            form1: formData1,
            form2: formData2
        },
        success: function(response) {
            alert(response); // Здесь вы можете обработать ответ от сервера
        },
        error: function(jqXHR, textStatus, errorThrown) {
            console.error("Ошибка: " + textStatus + " " + errorThrown);
        }
    });
}
</script>

Шаг 3: Обработка данных на сервере

На сервере вам нужно создать обработчик, который обработает данные обеих форм. Вот пример на PHP:

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // Обработка данных первой формы
    parse_str($_POST['form1'], $form1_data);
    // Обработка данных второй формы
    parse_str($_POST['form2'], $form2_data);

    // Здесь вы можете сохранить данные в базе данных или выполнить другую логику

    // Возврат ответа
    echo "Формы успешно отправлены!";
}
?>

Заключение

Теперь, когда вы нажимаете кнопку "Click Me", обе формы будут отправлены на сервер одновременно, а их данные будут обработаны. Убедитесь, что идентификаторы форм и путь к серверному скрипту корректны. Также обратите внимание на ошибку "uncaught TypeError", которая могла возникать из-за неправильных идентификаторов форм. Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...