2016-07-02 7 views
1

Ich bin ein Formular erstellen und PHP verwenden, um die Anfrage an einen E-Mail-Client zu behandeln. Wenn der Benutzer das Formular jetzt übermittelt, möchte ich nicht, dass die Seite aktualisiert wird, und ich möchte auch nicht, dass die Seite vollständig zurückkehrt.PHP & Formular aktualisieren

Ich möchte, dass es absenden, dann die Nachricht, die ich an derselben Stelle wie das Formular ohne Aktualisierung zur Verfügung gestellt habe. AJAX vielleicht?

Hier ist der Code

PHP

<?php 
error_reporting(0); 
if(isset($_POST["submit"])) { 

$name=$_POST['first_name']; 
$email=$_POST['exampleInputEmail1']; 
$description=$_POST['description']; 
$toaddress = "[email protected]"; 
$subject = "Propective User"; 

$mailcontent = "Name: ".$name."\n". 
       "Customer Email: ".$email."\n". 
       "Customer Description:\n".$description."\n"; 

$fromaddress = "From: $name"; 
$messageaftersending = "Thank you, ".$name."! \n". 
         " You've signed up for something awesome. \n"; 

mail($toaddress, $subject, $mailcontent, $fromaddress); 
$hidemydiv = "hide"; 
}?> 

HTML

<span class="thanksmessage text-faded"><?php echo $messageaftersending ?></span> 
<div class="<?php echo $hidemydiv ?>"> 
    <div class="row"> 
    <div class="formstyle"> 
    <form role="form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" name="myemailform" method="post"> 

     <div class="col-lg-4 labels"> 
      <fieldset class="form-group"> 
      <label class="labels" for="firstname">First Name*</label> 
       <input type="text" name="first_name" class="form-control styled" required pattern="[a-zA-Z0-9s\-\s]+" onkeyup="" id="firstname" pattern="[a-zA-Z0-9]+"> 
      </fieldset> 
      <span class="error"><p id="name_error"></p></span> 
</div> 
+0

Ihre Intuition ist korrekt. Wenn Sie ein Formular an den Server senden und eine Antwort vom Server lesen möchten, ohne die Seite zu aktualisieren oder sich fortzubewegen, sollten Sie in AJAX – BeetleJuice

+0

schauen, ich werde das untersuchen. Immer noch ziemlich neu bei der gesamten Verarbeitung. – ColeGauthier

Antwort

1

Ajax ist der Weg zu gehen. Erstellen eine PHP-Datei, die die Post params akzeptiert und gibt JSON

<?php 
/* your mail code */ 
if (all_good) { 
    echo(json_encode(array('success' => true)); 
} else { 
    echo(json_encode(array('success' => false)); 
} 
?> 

Jetzt ein XHR-Objekt erstellen Anforderung an den Server zu senden und auf der Grundlage der Antwort, zeigen Sie den Text. Verwenden Sie:

var data = JSON.parse(response.text) 

, um das JSON-Dataset zu analysieren, das von PHP gesendet wird. Ich würde jedoch vorschlagen, jQuery.post() anstelle von XHR zu verwenden.

+0

Ich bin mir nicht sicher, wie ich JSON benutzen soll, aber ich werde es mir ansehen. – ColeGauthier