Mit der Entwicklung des Internets müssen immer mehr Websites Benutzerdaten über Formulare übermitteln. Unter diesen eignet sich PHP als weit verbreitete serverseitige Programmiersprache sehr gut für die Verarbeitung von Formulardaten. In PHP können Formulardaten über die POST-Methode übergeben werden. Normalerweise springt POST nach dem Absenden zu anderen Seiten. Manchmal hoffen wir jedoch, dass die Seite nach dem Absenden der Formulardaten nicht springt und die Übermittlungsergebnisse auf derselben Seite angezeigt werden. In diesem Artikel wird erläutert, wie Sie die PHP-Übermittlung von POST-Anfragen implementieren, ohne zur Seite zu springen.
1. AJAX-Technologie verwenden
AJAX ist die Abkürzung für Asynchronous JavaScript and XML (asynchrones JavaScript und XML). Es handelt sich um eine Technologie, die Daten vom Server über den JavaScript-Hintergrund erhält, ohne die gesamte Seite zu aktualisieren. Daher können Formulardaten mithilfe der AJAX-Technologie übermittelt werden, ohne dass die Seite aktualisiert werden muss.
Zuerst müssen Sie die jQuery-Bibliothek in den HTML-Code einführen. jQuery ist eine leichtgewichtige JavaScript-Bibliothek, die die JavaScript-Programmierung erheblich vereinfacht.
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
Fügen Sie dem Formular-Tag ein ID-Attribut hinzu, um das Formular in jQuery zu bearbeiten.
<form id="myForm" action="submit.php" method="post"> <!-- 表单元素 --> </form>
Verwenden Sie die $.post()-Methode von jQuery in JavaScript, um Formulardaten zu übermitteln. Der Beispielcode lautet wie folgt: Die Methode
$(function(){ $('#myForm').submit(function(event){ event.preventDefault(); // 阻止表单默认提交 $.post('submit.php', $(this).serialize(), function(response){ // 处理服务器返回的响应数据 }); }); });
$.post() empfängt drei Parameter: die zu übermittelnde URL, die zu übermittelnden Daten und bei Erfolg die Rückruffunktion. Unter anderem kann die Methode $(this).serialize() die Formulardaten zur einfachen Übertragung in eine Zeichenfolge serialisieren.
Verwenden Sie in PHP-Dateien (z. B. „submit.php“) das superglobale Array „$_POST“, um Formulardaten zu empfangen und diese nach der Verarbeitung an den Client zurückzugeben. Der Beispielcode lautet wie folgt:
<?php // 处理表单数据 $response = array("status" => 1, "message" => "提交成功"); echo json_encode($response); // 将响应数据转换为 JSON 格式返回给客户端 ?>
2. Implementierung mit Iframe
Die Methode zur Verwendung von Iframe ist relativ einfach. Sie können beim Absenden des Formulars einen versteckten Iframe erstellen und die Formulardaten an den Iframe senden. Da die Formulardaten innerhalb eines Iframes übermittelt werden, wird die URL der aktuellen Seite nicht geändert. Schließlich können die Antwortdaten im Iframe über JS abgerufen und auf der aktuellen Seite angezeigt werden.
Der HTML-Code lautet wie folgt:
<form id="myForm" target="iframe" action="submit.php" method="post"> <!-- 表单元素 --> <input type="submit" value="提交"> </form> <iframe name="iframe" style="display:none;"></iframe>
Unter anderem gibt das Zielattribut des Formulars das Fenster oder den Frame an, an das gesendet werden soll. Da wir eine nicht springende Seite erreichen möchten, geben wir das Ziel als versteckten Iframe an.
Verarbeiten Sie die Formulardaten in subscribe.php und geben Sie die Antwortdaten an den Iframe zurück:
<?php // 处理表单数据 $response = array("status" => 1, "message" => "提交成功"); echo "<script>parent.postMessage('" . json_encode($response) . "', '*');</script>"; // 将响应数据传递给父页面 ?>
Hören Sie sich das Ladeereignis des Iframes über JS auf der übergeordneten Seite an und erhalten Sie die Antwortdaten im Iframe:
$(function(){ $('#iframe').on('load', function(){ var response = $(this).contents().find('body').html(); // 处理服务器返回的响应数据 }); });
Zusammenfassung
In diesem Artikel werden zwei Möglichkeiten zur Implementierung der PHP-Übermittlung von POST-Anfragen ohne Seitensprung vorgestellt: die Verwendung der AJAX-Technologie und die Verwendung von iframe. Beide Methoden haben ihre Vor- und Nachteile und können je nach Bedarf ausgewählt werden.
Durch die Verwendung der AJAX-Technologie kann eine Seitenaktualisierung weitestgehend vermieden werden, und der Vorgang wird reibungsloser. Allerdings sind einige Grundkenntnisse in JavaScript und Vertrautheit mit der jQuery-Bibliothek erforderlich.
Die Verwendung der Iframe-Technologie ist einfacher zu implementieren, Sie müssen jedoch einen zusätzlichen Iframe erstellen und die Antwortdaten im Iframe verarbeiten.
Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn PHP beim Absenden eines Beitrags nicht zur Seite springt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!