0

我有这个带有联系表格的登陆页面,它在我的常规托管上没有任何问题,但它不想在我有权访问的这个 VPS 上工作。当我单击“发送”按钮时,什么也没有发生,也没有发送电子邮件。我检查了 mail() 函数,它似乎可以在他们的服务器上运行。

ajax/json 无法在此服务器上运行的原因可能是什么?

这是 JS 代码(core.js):

if ($('#contact').is(":visible")) {

    $("#contact button").click(function() {

        var name     = $("#contactname").val();
        var message  = $("#contactmessage").val();
        var email    = $("#contactemail").val();
        var emailReg = /^[a-zA-Z0-9._+-]+@[a-zA-Z0-9-]+\.[a-zA-Z]{2,4}(\.[a-zA-Z]{2,3})?(\.[a-zA-Z]{2,3})?$/;

        // client-side validation
        if(emailReg.test(email) == false) {
            var emailValidation = false;
            $('#contactemail').addClass("error");
        }
        else
            $('#contactemail').removeClass("error");

        if(name.length < 1) {
            var nameValidation = false;
            $('#contactname').addClass("error");
        }
        else
            $('#contactname').removeClass("error");

        if(message.length < 1) {
            var messageValidation = false;
            $('#contactmessage').addClass("error");
        }
        else
            $('#contactmessage').removeClass("error");

        if ((nameValidation == false) || (emailValidation == false) || (messageValidation == false))
            return false;

        $.ajax({
            type: "post",
            dataType: "json",
            url: "send-email.php",
            data: $("#contact").serialize(),
            success: function(data) {

                $('.form').html('<p class="success">Email sent. Thank you.</p>');

            }
        });
        return false;
    });

};

PHP 文件 ( send-email.php ):

<? if($_SERVER['REQUEST_METHOD'] == "POST" ) {

    $destination = 'myemail@example.com'; // change this to your email.

    $email   = $_POST['email'];
    $name    = $_POST['name'];
    $message = $_POST['message'];
    $subject = $name;
    $headers = "From: ".$name." <".$email.">\r\n" .
             "Reply-To: ".$name." <".$email.">\r\n" .
             "X-Mailer: PHP/" . phpversion() . "\r\n" .
             "MIME-Version: 1.0\r\n" .
             "Content-Type: text/plain; charset=\"iso-8859-1\r\n" .
             "Content-Transfer-Encoding: 8bit\r\n\r\n";

    mail($destination, $subject, $message, $headers);

}

和 HTML:

<form class="contact" id="contact">
  <div class="form">
    <input type="text" name="name" placeholder="Name" id="contactname" />
    <input type="text" name="email" placeholder="Email" id="contactemail" />
    <textarea name="message" placeholder="Message" id="contactmessage"></textarea>
    <button>Send</button>
  </div>
</form>
4

2 回答 2

0

尝试使用

$("#contact").serializeArray()
于 2013-10-03T19:16:25.770 回答
0

var emailValidation = false;里面的语句IF是使变量emailValidation成为它的局部变量。同样,其他变量也是本地的。在条件之外的全局范围内声明它们。

于 2013-10-03T19:13:10.897 回答