wake-up-neo.net

jQuery AJAX Formular mit Mail () PHP Skript sendet E-Mail, aber POST Daten aus HTML-Formular sind undefiniert

Danke, dass Sie sich die Zeit genommen haben, Jungs zu schauen. Ich erstelle ein recht einfaches AJAX Kontaktformular mit jQuery. Die E-Mail wird gesendet, aber beim Öffnen der E-Mail werden keine POST - Daten angezeigt. Ich bekomme also nur die Zeichenfolgen, die ich im Skript PHP definiert habe. Auf dem E-Mail-Client meines Telefons lautet der Inhalt der E-Mail buchstäblich "undefined". Ich habe versucht, verschiedene Typen von Header-Daten ohne Erfolg hinzuzufügen, und eine Reihe von Variationen der Funktion PHP mail (). 

Ich bin mehr als bereit, eine einfachere Lösung für ein einfaches AJAX Formular anzunehmen, deshalb bedanke ich mich im Voraus für alle neuen Ansätze. 

Hier ist das Formular:

   <section id="left">
      <label for="form_name">Name</label>
      <input name="form_name" id="form_name" type="text" >

      <label for="form_email">Email</label>
      <input name="form_email" id="form_email" type="email" >
   </section>

   <section id="right">
      <label for="form_msg">Message</label>
      <textarea name="form_msg" id="form_msg"></textarea>
      <input id="submit" class="button" name="submit" type="submit" value="Send">
   </section>

</form>

Das jQuery AJAX:

$(function() {
    $("#contact .button").click(function() {
        var name = $("#form_name").val();
        var email = $("#form_email").val();
        var text = $("#msg_text").val();
        var dataString = 'name='+ name + '&email=' + email + '&text=' + text;

        $.ajax({
            type: "POST",
            url: "email.php",
            data: dataString,
            success: function(){
            $('.success').fadeIn(1000);
            }
        });

        return false;
    });
});

Das PHP Skript (externe Datei 'email.php'):

<?php
if($_POST){
    $name = $_POST['form_name'];
    $email = $_POST['form_email'];
    $message = $_POST['form_msg'];

//send email
    mail("[email protected]", "This is an email from:" .$email, $message);
}
?>
11
Jason Sears

Es muss keine Abfragezeichenfolge erstellt werden. Geben Sie einfach Ihre Werte in ein Objekt ein, und den Rest erledigt jQuery für Sie.

var data = {
    name: $("#form_name").val(),
    email: $("#form_email").val(),
    message: $("#msg_text").val()
};
$.ajax({
    type: "POST",
    url: "email.php",
    data: data,
    success: function(){
        $('.success').fadeIn(1000);
    }
});
19
Seain Malkin

Lassen Sie Ihren email.php-Code gleich, ersetzen Sie diesen JavaScript-Code jedoch:

 var name = $("#form_name").val();
        var email = $("#form_email").val();
        var text = $("#msg_text").val();
        var dataString = 'name='+ name + '&email=' + email + '&text=' + text;

        $.ajax({
            type: "POST",
            url: "email.php",
            data: dataString,
            success: function(){
            $('.success').fadeIn(1000);
            }
        });

mit diesem:

    $.ajax({
        type: "POST",
        url: "email.php",
        data: $(form).serialize(),
        success: function(){
        $('.success').fadeIn(1000);
        }
    });

Damit die Namen Ihrer Formulareingaben übereinstimmen.

6

Sie verwenden die falschen Post-Parameter:

    var dataString = 'name='+ name + '&email=' + email + '&text=' + text;
                      ^^^^-$_POST['name']
                                       ^^^^--$_POST['name']
                                      etc....

Die Javascript/HTML-IDs sind für den tatsächlichen POST irrelevant, insbesondere wenn Sie Ihre eigene Datenzeichenfolge erstellen und nicht dieselben IDs verwenden.

4
Marc B

Sie verwenden den falschen Parameternamen. Versuchen Sie Folgendes:

if($_POST){
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['text'];

//send email
    mail("[email protected]", "51 Deep comment from" .$email, $message);
}
4
Garis M Suero

Ihr Code sollte sein:

   <section id="right">
      <label for="form_msg">Message</label>
      <textarea name="form_msg" id="#msg_text"></textarea>
      <input id="submit" class="button" name="submit" type="submit" value="Send">
   </section>

Js

var data = {
    name: $("#form_name").val(),
    email: $("#form_email").val(),
    message: $("#msg_text").val()
};
$.ajax({
    type: "POST",
    url: "email.php",
    data: data,
    success: function(){
        $('.success').fadeIn(1000);
    }
});

Das PHP:

<?php
if($_POST){
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['text'];

//send email
    mail("[email protected]","My Subject:",$email,$message);
}
?>
2
Hil

Ihr PHP Skript (externe Datei 'email.php') sollte folgendermaßen aussehen:

<?php
if($_POST){
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['text'];

//send email
    mail("[email protected]", "51 Deep comment from" .$email, $message);
}
?>
0
EmCo