SubmitFormData как Json (обновление без обновления страницы

Я работаю над своей формой отправки без обновления страницы. Ниже мой код, который отлично работает. Как бы то ни было, было бы проще, если бы я мог отправлять данные в свой файл back.php в формате Json, поэтому мне не нужно объявлять все переменные в разделе сценария. Есть ли способ отправить данные из формы в json и расшифровать их в моем файле back.php? Это сделало бы мою жизнь намного проще. Благодарю вас!

фронт.php

<script>
    function SubmitFormData() {
        var vorname = $("#vorname").val();
        var nachname = $("#nachname").val();
        $.post("back.php", {
                vorname: vorname,
                nachname: nachname
            },
            function(data) {
                $('#results').html(data);
                $('#myForm')[0].reset();
            });
    }
</script>

<form id = "myForm" method = "post">
    Name: <input name = "vorname" id = "vorname" type = "text" /><br/>
    Name: <input name = "nachname" id = "nachname" type = "text" /><br/>
    <input type = "button" id = "submitFormData" onclick = "SubmitFormData();" value = "Submit" />
</form>

<div id = "results">
    <!-- All data will display here  -->
</div>

back.php

// Here some Json decode?

// get values form input text and number
$vorname = $_POST['vorname'];
$nachname = $_POST['nachname'];

// Update SQL table with prepared statement
$query =   "UPDATE users  
                SET vorname = :vorname, nachname = :nachname  
                WHERE id = :user_id";
$pdoResult = $pdo->prepare($query);
$pdoExec = $pdoResult->execute(array(":vorname" => $vorname, ":nachname" => $nachname, ':user_id' => 2));
if ($pdoExec) {
    $success_msg = "Erfolgreich!";
} else {
}
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
0
19
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

это должно сработать для вас:

с JQuery вы можете использовать $("#idOfYourForm").serialize() в форме;

Метод .serialize() создает текстовую строку в стандартной нотации с кодировкой URL.

Итак, в вашем сценарии вы сделаете что-то вроде:

function SubmitFormData() {

   //in your case your form id its #myForm
   var formValues = $("#myForm").serialize();
   $.post("back.php", formValues,
        function(data) {
             $('#results').html(data);
             $('#myForm')[0].reset();
        }
   );
}

Спасибо. Был немного смущен, на какой «id» вы ссылаетесь. Изменил строку на: var formValues ​​= $('#myForm').serialize(); и это работает. Благодарю вас!

Mischa Mustermann 09.05.2022 22:35

@MischaMustermann Я отредактировал ответ. скажите мне, если это более ясно для вас.

Martinez 09.05.2022 22:38

Да, мы сделали это одновременно. С этим решением мне также больше не нужно объявлять input.id. Выйти хорошо для пост-реализации.

Mischa Mustermann 09.05.2022 22:39

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