Ich richte ein extrem einfaches PHP/jQuery/Ajax Kontaktformular ein; und während es funktioniert, ist die Antwort extrem langsam (5+ Sekunden für die Erfolgsmeldung zu zeigen) und ich frage mich, was ich falsch machen könnte. HierSehr langsame Kontaktformularantwort (PHP/jQuery/Ajax)
ist alle relevanten Code:
Markup:
<form id="contact-form" name="contact-form" action="php/form-process.php" method="post" role="form">
<input type="text" name="name" id="name" placeholder="Name" required>
<input type="email" name="email" id="email" placeholder="Email" required>
<textarea id="message" name="message" rows="5" placeholder="Your message" required></textarea>
<button type="submit" id="form-submit" class="contact-button">Submit</button>
<div id="msg-submit" class="hidden">Message sumbitted!</div>
</form>
PHP:
<?php
$name = $_POST["name"];
$email = $_POST["email"];
$message = $_POST["message"];
$EmailTo = "[email protected]";
$Subject = "New Contact Form Message";
// prepare email body text
$Body .= "Name: ";
$Body .= $name;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $email;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $message;
$Body .= "\n";
// send email
$success = mail($EmailTo, $Subject, $Body, "From:".$email);
// redirect to success page
if ($success){
echo "success";
}else{
echo "invalid";
}
?>
jQuery:
$('#contact-form').submit(function(event){
event.preventDefault();
submitForm();
});
function submitForm(){
var $this = $('#contact-form');
$.ajax({
type: $this.attr('method'),
url: $this.attr('action'),
data: $this.serialize(),
success : function(text){
if (text == "success"){
formSuccess();
}
}
});
}
function formSuccess(){
$("#msg-submit").removeClass("hidden");
}
Ich lasse alle Formularvalidierungsfunktionen aus, um an den absoluten Grundlagen zu bleiben. Ich bin nicht sicher, ob es der Server ist, der die langsame Antwort verursacht, aber im Idealfall möchte ich, dass die Erfolgsmeldung angezeigt wird, sobald der Benutzer auf "Senden" klickt. Danke für jede Hilfe hier.
Erste Rate - es ist, weil es darauf wartet, dass die E-Mail gesendet wird. – vlaz
Es gibt keine Möglichkeit, die wir mit den von Ihnen bereitgestellten Informationen kennen könnten. Warum vergraben Sie eine andere Funktion innerhalb der '.submit()' Methode? –
@JayBlanchard - Welche weiteren Informationen sollte ich bereitstellen? Die Website wird auf MediaTemple gehostet (freigegeben). – nickpish