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

var emailValidation = false;内部のステートメントIFは、変数emailValidationをローカルにします。同様に、他の変数もローカルです。条件の外で、グローバル スコープでそれらを宣言します。

于 2013-10-03T19:13:10.897 に答える
0

使ってみて

$("#contact").serializeArray()
于 2013-10-03T19:16:25.770 に答える