• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Nach abschicken von Formular Popup / Lightbox

AzRaIL

Mitglied
Hab ein Formular mit einigen Eingabefeldern erstellt in HTML.

die PHP Datei sieht folgendermaßen aus:

Code:
<?php

$text = strip_tags($_POST['nachricht']);
$emailaddr = $_POST['email'];
$nachricht = "Nachricht:\r\n".$text."\r\n"."Email:\r\n".$emailaddr;
$email = '[email protected]';
$betreff = 'Nachricht';

mail($email, $betreff, $nachricht);

header("Location: http://startseite.de");
exit();

?>

Funktioniert auch soweit, Email mit allen Daten wird verschickt und man wird auf die Startseite weitergeleitet
Das möchte ich nun ändern indem ein Popup oder ne Lightbox mit einer Nachricht erscheint.
Für ne Lightbox brauche ich sicherlich ein externes Skript, aber Popup? Gibts da evtl. ne Funktion von PHP selbst?

edit:

Hab mich nun dem .dialog von jQuery bedient

Code:
jQuery(function() {
        jQuery('#dialog-modal').dialog({
            height: 140,
            modal: true
        });
    });

Lässt halt ein Popup Fenster erscheinen direkt beim Seitenaufruf.
Ich versuche gerade das ganze erst auszuführen nachdem das Formular abgeschickt und mittels

header("Location: http://startseite.de");

auf die Startseite weitergeleitet wurde.
Also jQuery('#senden').click(function() {
drumrum.

Jedoch wird das Popup Fenster dann direkt angezeigt und nach wenigen Augenblicken wird auf die Startseite weitergeleitet. Nun bin ich mit meinen Kentnissen langsam am Ende :o

Hättet ihr Vorschläge wie man das umsetzen könnte?
 
Zuletzt bearbeitet:
- header() aus dem PHP-Skript löschen
- Formular per Ajax versenden
- im Success-Handler der Ajax-Funktion das jQuery Modal aufrufen
- Falls ein Redirect auf die Startseite gewünscht ist, mache das mit JS, bsw. als jQuery Event beim Schließen des Modals

- Solltest du jetzt keinen Plan haben, wie man per Ajax Daten sendet und empfängt: Ich habe dazu vor zwei Tagen eine Mini-Anleitung gepostet
 
Hey Danke für die schnelle Antwort an Weinachten :)

Habe nun deinen Code in mein Skript eingebaut
Sieht folgendermaßen aus:

Code:
    jQuery('#senden').click(function (e) {
       e.preventDefault(); // HTML-Funktion des Buttons abschalten
       jQuery.ajax({
           url: 'nachricht.php', // 'action' des Formulars
           type: 'POST', // 'method' des Formulars
            data: { // Das hier liegt in $_POST und wird an das PHP-Skript gesendet
                name: jQuery('input[name="nachricht"]').val(),
                mail: jQuery('input[name="email"]').val()
            },
           success: jQuery(function () {
               jQuery('#dialog-modal').dialog({
                   height: 140,
                   modal: true
               });
           })
       });
    });

Klappt auch soweit. Dialog Fenster wird sofort nach klick angezeigt. Jedoch kriege ich nun keine Email mehr mit den Daten die an die nachricht.php gesendet werden.

nachricht.php
PHP:
<?php

$text = strip_tags($_POST['nachricht']);
$emailaddr = $_POST['email'];
$nachricht = "Nachricht:\r\n".$text."\r\n"."Email:\r\n".$emailaddr;
$email = '[email protected]';
$betreff = 'Nachricht';

mail($email, $betreff, $nachricht);

?>

Weißt du woran es liegt?
 
Zuletzt bearbeitet:
Die Keys aus dem Data-Objekt von Ajax müssen schon mit $_POST übereinstimmen. Also

data:
nachricht: 'irgendwas',
email: 'irgendwas'
}

wird zu $_POST['nachricht'] und $_POST['email'].
 
Code:
data: {
                nachricht: $_POST['nachricht'],
                mail: $_POST['email']
            },

Nun kriege ich folgende Fehlermeldung
Uncaught ReferenceError: $_POST is not defined

Das $ ist in dem Fall ja PHP...habs mit php Tags versucht <?php ?> aber das hat nichts gebracht.

Aso und bei der url gebe ich ja nur "nachricht.php" an. Geht er jetzt vom Root Verzeichnis aus oder von meiner Index Datei?
 
Zuletzt bearbeitet:
name: jQuery('input[name="[B][COLOR=#ff0000]nachricht[/COLOR][/B]"]').val(),
mail: jQuery('input[name="[COLOR=#ff0000][B]email[/B][/COLOR]"]').val()

$text = strip_tags($_POST['nachricht']);

Du verwendest in jquery 'name' und in PHP 'nachricht'
 
Ist mittlerweile alles angepasst jedoch kriege ich bei

Code:
data: {
                nachricht: jQuery('input[name="nachricht"]').val(),
                email: jQuery('input[name="email"]').val()
            },

Keinen Fehler bzw. er gelangt zum success.

Jedoch bei

Code:
data: {
                nachricht: $_POST['nachricht'],
                email: $_POST['email']
            },

Kriege ich beim abschicken nur die oben beschriebene Fehlermeldung, dass $_POST nicht definiert ist.
 
Ja es war scheinbar schon richtig so wie es am anfang war. die nachricht.php war lediglich im falschen Verzeichnis.
Klappt nun alles. Danke euch beiden für die Hilfe :)
 
Zurück
Oben