Ho un modulo di contatto HTML che è incorporato in index.html, e quindi ho un file mail.php che invia una mail e usa anche alcuni Javascript. Quando compilo il modulo e lo invio, l'ho codificato per inviare la posta, quindi viene visualizzata una finestra di messaggio di successo e quindi viene reindirizzato a index.html.Sostituendo il modulo HTML con il messaggio di successo dopo l'invio, il modulo invia la posta utilizzando il file php separato
Quello che vorrei è che il modulo venga sostituito con il messaggio di successo, per evitare un aggiornamento della pagina e anche per evitare la finestra del messaggio.
forma da index.html:
<form action="mail.php" method="POST">
<div class="row uniform">
<div class="6u 12u$(xsmall)">
<input type="text" name="name" id="name" value="" placeholder="Name" />
</div>
<div class="6u$ 12u$(xsmall)">
<input type="email" name="email" id="email" value="" placeholder="Email" />
</div>
<div class="12u$">
<!--<div class="select-wrapper">
</div>-->
</div>
<div class="12u$">
<textarea name="message" id="message" placeholder="Enter your message" rows="6"></textarea>
</div>
<center><div class="g-recaptcha" data-sitekey=""></div></center>
<div class="12u$">
<ul class="actions">
<li><input type="submit" value="Send Message" class="special" /></li>
<li><input type="reset" value="Reset" /></li>
</ul>
</div>
</div>
</form>
file php, indirizzo e-mail e il token recaptcha rimosso per ovvi motivi:
<?php $name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$formcontent = "From: $name \n email: $email \n Message: $message";
$recipient = 'email address here';
$subject = 'Message from Website';
$mailheader = "From: $email \r\n";
$captcha;
{
if(isset($_POST['g-recaptcha-response']))
{
$captcha=$_POST['g-recaptcha-response'];
}
if(!$captcha)
{
echo '<script language="javascript">';
echo 'alert("Please check the Captcha")';
echo '</script>';
exit;
}
$response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']);
if($response.success==false)
{
echo '<h2>Please do not try and spam here.</h2>';
}else
{
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo '<script language="javascript">';
echo 'alert("Your Message successfully sent, we will get back to you ASAP.");';
echo 'window.location.href="index.html";';
echo '</script>';
}
} ?>
Questo è un argomento che ho effettivamente guardato:
Clear form after submit and success message
solo FYI: 'data.message' sarà indefinito,' data' stesso sarà una stringa - '" Il tuo messaggio inviato con successo, ti risponderemo al più presto. "' – Pogrindis
oops .. Ho pensato di restituire un formattato json ... Grazie, aggiornerò la mia risposta. –
@SumitPandey Sono interessato a provare la tua risposta, ho implementato la risposta inviata da hunijkah ma c'è un errore nel controllo degli errori, l'ho guardato per vedere qual è il problema, ma sono nuovo per Ajax e jQuery. Il mio file php aveva già tutto il controllo degli errori, quindi pensavo che il file php avrebbe continuato a gestirlo. La tua risposta avrebbe risolto la mia soluzione? Sono così vicino ad avere questo lavoro ma il controllo degli errori è letteralmente l'unico bump in the road, se il modulo è compilato correttamente funziona perfettamente. – Troy