非常に基本的なPHP/jQuery/Ajaxのコンタクトフォームを設定しています。それが動作している間は、応答は非常に遅く(成功メッセージが表示されるまで5秒以上)、私は何が間違っているのだろうと思っています。ここで非常に遅いコンタクトフォームのレスポンス(PHP/jQuery/Ajax)
関連するすべてのコードです:
マークアップ:
<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");
}
絶対的な基本を守るために、すべてのフォーム検証機能を使いません。遅い応答を引き起こすサーバであるかどうかはわかりませんが、理想的には、ユーザーが送信をクリックするとすぐに成功メッセージが表示されるようにしたいと思います。ご協力いただきありがとうございます。
最初の推測です。電子メールが送信されるのを待っているからです。 – vlaz
あなたが提供した情報で私たちが知る方法はありません。なぜあなたは '.submit()'メソッド内に別の関数を埋め込んでいますか? –
@JayBlanchard - 何を提供する必要がありますか?このサイトはMediaTemple(共有)でホストされています。 – nickpish