我正在建立一个非常基本的PHP / jQuery / Ajax联系表格;并且在运行时,响应速度非常慢(成功消息显示后需要5秒以上的时间),我想知道自己可能做错了什么。

这是所有相关代码:

标记:

<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");
    }


我遗漏了所有表单验证功能,以坚持绝对的基础知识。我不确定是否是服务器导致响应缓慢,但是理想情况下,我希望用户单击“提交”后立即显示成功消息。感谢您的协助。

最佳答案

我将假设您使用的是PHPMailer,但是如果我错了,请更正我。如果没有,请考虑使用它来实现下一部分。

您的PHP脚本正在等待发送电子邮件。那不是应该怎么做。您需要使用邮件服务器发送它。有关如何使用PHPMailer执行此操作的信息,请参见此superb answer

关于javascript - 联络表单回应非常缓慢(PHP/jQuery/Ajax),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38752747/

10-12 00:58