Я работаю над своей формой отправки без обновления страницы. Ниже мой код, который отлично работает. Как бы то ни было, было бы проще, если бы я мог отправлять данные в свой файл 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 {
}
это должно сработать для вас:
с 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();
}
);
}
@MischaMustermann Я отредактировал ответ. скажите мне, если это более ясно для вас.
Да, мы сделали это одновременно. С этим решением мне также больше не нужно объявлять input.id. Выйти хорошо для пост-реализации.
Спасибо. Был немного смущен, на какой «id» вы ссылаетесь. Изменил строку на: var formValues = $('#myForm').serialize(); и это работает. Благодарю вас!