jQuery: Formular mit AJAX senden
- Formular mit AJAX in jQuery senden: Direkter Ansatz
- Verwenden Sie das jQuery-Formular-Plugin, um ein Formular mit AJAX in jQuery zu senden
-
Formular mit AJAX in jQuery senden: Der
FormData-Ansatz
In diesem Artikel lernen Sie drei Methoden zum Senden eines Formulars mit AJAX-in-jQuery kennen. Das erste ist die direkte Verwendung von AJAX-in-jQuery, während das zweite das AJAX Form Plugin verwendet.
Bei der dritten Methode verwenden wir das Objekt FormData, um die Formulardaten zu erfassen, bevor wir sie mit AJAX senden.
Formular mit AJAX in jQuery senden: Direkter Ansatz
Wir nennen dies einen “direkten Ansatz”, weil es keine externe Bibliothek oder irgendetwas Besonderes gibt. Zuerst richten Sie Ihr HTML-Formular ein und stellen sicher, dass Sie die richtigen Namensattribute haben.
Verwenden Sie dann jQuery, um Folgendes zu tun.
- Verwenden Sie jQuery, um auf die Formularübermittlung zu lauschen.
- Verhindern Sie das standardmäßige Übermittlungsverhalten.
- Verwenden Sie die Methode
ajax()in jQuery, um eine AJAX-Verbindung zu starten. - Stellen Sie sicher, dass die Eigenschaft
typeinajax()POSTist. - Stellen Sie sicher, dass der Wert der Eigenschaft
urldem Wert des HTML-Attributsactionentspricht. - Stellen Sie sicher, dass der Wert der Eigenschaft
dataein serialisiertes Format aller Formulareingaben ist. - Verarbeiten Sie die Rückgabedaten mit einer Funktion als Wert der Eigenschaft
success. - Verarbeiten Sie alle Fehler, indem Sie die Funktion als Wert der Eigenschaft
Fehlerverwenden.
Die Codeimplementierung dieser Schritte finden Sie im folgenden Code. Beachten Sie, dass der Wert des HTML-Formularattributs ein PHP-Skript ist, das das Formular verarbeitet.
Dieses Mal zeigen wir nur die übermittelten Daten in der Konsole an. Sie können die Formulardaten jedoch an eine Datenbank senden; Sie finden das PHP-Skript am Ende dieses Artikels.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>01-jQuery AJAX Submit form</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<style>
body { display: grid; justify-content: center; align-items: center; height: 100vh; }
form { border: 3px solid #1560bd; font-size: 1.2em; padding: 1.2em; }
</style>
</head>
<body>
<main>
<form id="html_form" action="process-jquery-form.php" method="POST">
<label for="first_name">First name</label>
<input id="first_name" type="text" name="first_name" required>
<label for="last_name">Last name</label>
<input id="last_name" type="text" name="last_name" required>
<input type="submit" name="submit" value="Submit form">
</form>
</main>
<script>
$("#html_form").submit(function(event) {
// Prevent the default submit behavior
event.preventDefault();
// "this" refers to the current HTML form
let current_html_form = $(this);
let action_url = current_html_form.attr('action');
$.ajax({
type: "POST",
url: action_url,
data: current_html_form.serialize(), // Turn the form elements into a usable string
success: function (data) {
console.log(data);
},
error: function (data) {
alert("An error occurred during form submission");
},
});
});
</script>
</body>
</html>
Ausgang:

Verwenden Sie das jQuery-Formular-Plugin, um ein Formular mit AJAX in jQuery zu senden
Diese Methode führt zum Senden des Formulars mit AJAX in jQuery, aber anders. Wir verwenden diesmal die Methode ajaxForm im jQuery Form Plugin.
Es hat den gleichen Ansatz zum Senden des Formulars mit AJAX, mit der folgenden Ausnahme.
- Importieren Sie das jQuery Form Plugin in Ihr Skript.
- Verwenden Sie die
ajaxForm-Methode des Plugins. Dieser kümmert sich hinter den Kulissen um die Formularübermittlung. - Der Wert der Eigenschaft
urlist der Name des Skripts, das die übermittelten Daten verarbeitet. - Sie schreiben nicht
$.ajax(), sondern$(form_selector).ajaxForm(). Wobeiform_selectorder Klassen- oder ID-Name Ihres HTML-Formulars ist.
Wir haben diese Schritte im folgenden Code implementiert. Sie können die Ausgabe im nächsten Bild überprüfen.
Zur Erinnerung finden Sie das PHP-Skript am Ende des Artikels.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>02-jQuery-AJAX-with-AJAX-Form.html</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.form/4.3.0/jquery.form.min.js" integrity="sha512-YUkaLm+KJ5lQXDBdqBqk7EVhJAdxRnVdT2vtCzwPHSweCzyMgYV/tgGF4/dCyqtCC2eCphz0lRQgatGVdfR0ww==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<style>
body { display: grid; justify-content: center; align-items: center; height: 100vh; }
form { border: 3px dotted #0a9; font-size: 1.2em; padding: 1.2em; }
</style>
</head>
<body>
<main>
<form id="html_form" action="process-jquery-form.php" method="POST">
<label for="first_name">First name</label>
<input id="first_name" type="text" name="first_name" required>
<label for="last_name">Last name</label>
<input id="last_name" type="text" name="last_name" required>
<input type="submit" name="submit" value="Submit form">
</form>
</main>
<script>
$(function(){
$('#html_form').ajaxForm({
type: "POST",
url:'process-jquery-form.php',
success: function (data) {
console.log(data);
},
error: function (data) {
alert("An error occurred during form submission");
},
})
});
</script>
</body>
</html>
Ausgang:

Formular mit AJAX in jQuery senden: Der FormData-Ansatz
Diese Methode ist die gleiche wie der direkte Ansatz, da keine externe Bibliothek beteiligt ist. Aber dieses Mal holen wir uns die Formulardaten mit dem FormData-Objekt.
Die restlichen Schritte in der ajax()-Methode bleiben mit den folgenden Ergänzungen gleich.
- Fügen Sie die Eigenschaft
processDatahinzu und setzen Sie deren Wert auffalse. - Fügen Sie die Eigenschaft
contentTypehinzu und setzen Sie deren Wert auffalse. - Die Funktion in der Eigenschaft
errorsolltejQXHR,textStatusunderrorMessageals Argumente haben. Dann zeigen Sie eine Fehlermeldung mit dem ArgumenterrorMessagean.
Der folgende Code zeigt Ihnen, wie Sie dies tun. Das PHP-Skript finden Sie im nächsten Abschnitt.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>03-jQuery-AJAX-with-FormData.html</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<style>
body { display: grid; justify-content: center; align-items: center; height: 100vh;}
form { border: 3px dashed #1975c7; font-size: 1.2em; padding: 1.2em; }
</style>
</head>
<body>
<main>
<form id="html_form" action="process-jquery-form.php" method="POST">
<label for="first_name">First name</label>
<input id="first_name" type="text" name="first_name" required>
<label for="last_name">Last name</label>
<input id="last_name" type="text" name="last_name" required>
<input type="submit" name="submit" value="Submit form">
</form>
</main>
<script>
$("#html_form").submit(function(event) {
// Prevent the default submit behavior
event.preventDefault();
let current_html_form = $(this);
let action_url = current_html_form.attr('action');
// Grab the form data using the FormData Object
// Later, we'll use the data in the ajax request.
let form_data = new FormData(document.getElementById('html_form'));
$.ajax({
type: "POST",
url: action_url,
data: form_data,
processData: false,
contentType: false,
success: function (data) {
console.log(data);
},
error: function (jQXHR, textStatus, errorMessage) {
console.log(errorMessage);
},
});
});
</script>
</body>
</html>
Ausgang:

PHP-Skript für das HTML-Formular
Das Folgende ist das PHP-Skript, das zum Verarbeiten der HTML-Formulare in diesem Beispiel verwendet wird. Sie können es in Ihrem Arbeitsverzeichnis als process-jquery-form.php speichern.
<?php
// We detect an AJAX request from jQuery before
// processing the form data.
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH'])
&& strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
if (isset($_POST['first_name']) && isset($_POST['last_name'])) {
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
// Here, we show the first and last names.
// In your application, you can send them
// to your database.
echo "Hello " . htmlspecialchars($first_name) ." " . htmlspecialchars($last_name);
}
}
?>
Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.
LinkedIn