2016-03-27 12 views
0

Ich hatte eine normale PHP-Kontaktformular Probe, die ich für meine Bedürfnisse geändert habe. Ich wollte dann Ajax verwenden, um auf mein PHP-Mail-Skript zu posten. Aus irgendeinem Grund, ich sehe nach wie vor noch die Postwerte in meiner URL wie folgt aus:Kontaktformular nicht mit Ajax richtig

http://www.example.com?name=bruno&email=bruno%40gmail.com&subject=ajax+test+ff&message=test

ich versagt auch eine richtige Antwort von meinem php bekommen, ob die Sende erfolgreich war oder nicht. Ich möchte eine Nachricht anzeigen, wenn sie erfolgreich ist.

Die E-Mail sendet jedoch.

Dies ist mein Code:

HTML

<form> 
    <input type="text" class="form-control" id="name" name="name" placeholder="Name"> 
    <input type="email" id="email" name="email" class="form-control" placeholder="Email"> 
    <input type="text" class="form-control" id="subject" name="subject" placeholder="Subject"> 
    <textarea class="form-control" id="message" name="message" placeholder="Message" rows="4"></textarea> 
    <button id="submit" class="form-control text-uppercase">Send</button> 
</form> 

jQuery

$(document).ready(function() { 
    $("#submit").click(function(){ 
     var data = { 
     name:$("#name").val(), 
     email:$("#email").val(), 
     subject:$("#subject").val(), 
     message:$("#message").val(), 
     } 
      $.ajax({ 
       type: "POST", 
       url: "sendmail.php", 
       data: data, 
       dataType: 'json', 
       cache: false, 
      }) 
      .success(function(response) { 
       if(!response.errors && response.result=="success") { 
       alert("success") 
       } else 
       if(!response.errors && response.result=="oops") { 
       alert("oops somethign went wrong"); 
       } 
      }); 
    }); 
}); 

PHP

<?php 
    $inputvalues = $_POST; 
    $errors = false; 
    $result = false; 

    $email_to = "[email protected]"; 
    $email_from = "[email protected]"; 
    $name = $inputvalues["name"]; 
    $email = $inputvalues["email"]; 
    $message = $inputvalues["message"]; 
    $email_subject = $inputvalues["subject"]; 
    $headers = "From: " . $email_from . "\n"; 
    $headers .= "Reply-To: " . $email . "\n"; 
    $message = "Name: ". $name . "\r\nMessage: " . $message; 
    ini_set("sendmail_from", $email_from); 
    $sent = mail($email_to, $email_subject, $message, $headers, "-f" .$email); 
    if ($sent) { 
     $returnResult = "success"; 
    } 
    else { 
     $returnResult = "oops"; 
    } 
     echo json_encode(['result' => $returnResult, 'errors' => $errors]); 
?> 

Antwort

0

Sie müssen die Form verhindern, dass in Ihrem Zuhörer vorgelegt werden, das heißt

$(document).ready(function() { 
    $("#submit").click(function(event){ 
     event.preventDefault(); 
     var data = { 
     // etc. 
+0

Ah! Das hat die Ajax-Probleme gelöst. Vielen Dank Chris! –