Ajax联系表不发送电子邮件

时间:2014-01-20 09:29:44

标签: javascript php jquery ajax

对不起是一个菜鸟,但我正在努力。我已经完成并阅读了我能找到的所有内容,但我从来没有这样做过。真的很感激帮助。表单id在html和javascript中匹配。 PHP在Javascript中链接,我在我的html头部链接了javascript。我错过了什么?我已经尝试过我在网上找到的其他代码,但没有。问题是没有电子邮件发送过。如果你点击发送页面重新加载就可以了。

<!--[if lte IE 8]>
<script src="js/html5shiv.js"></script><![endif]-->

<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="js/jquery.min.js"></script>
<script src="js/jquery.dropotron.js"></script>
<script src="js/skel.min.js"></script>
<script src="js/skel-panels.min.js"></script>
<script src="js/init.js"></script>
<script src="js/contact.js"></script>
<noscript>
    <link rel="stylesheet" href="css/skel-noscript.css" />
    <link rel="stylesheet" href="css/style.css" />
    <link rel="stylesheet" href="css/style-noscript.css" />
</noscript>


<!-- Contact Form-->
<div class="content style4 featured">
<div class="container small">
    <form id="contact" form method="post">

    <div class="row half">
        <div class="6u"><input type="text" class="text" name="name" placeholder="Name" /></div>
        <div class="6u"><input type="text" class="text" placeholder="Email" name="email" /></div>
    </div>

    <div class="row half">
        <div class="12u"><textarea name="text" placeholder="Message"></textarea></div>
    </div>

    <div class="row">
        <div class="12u">
            <ul class="actions">
                <li><input type="submit" class="button" value="Send Message" /></li>
                <li><input type="reset" class="button alt" value="Clear Form" /></li>
<p class="success" style="display:none">Your message has been sent successfully.</p>
                <p class="error" style="display:none">E-mail must be valid and message must be longer than 100 characters.</p>
            </ul>
        </div>

    </div>

    </form>
</div>
</div>

PHP:

<?php
    // Email Submit
    // Note: filter_var() requires PHP >= 5.2.0
    if ( isset($_POST['email']) && isset($_POST['name']) && isset($_POST['text']) &&      filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ) {
        // detect & prevent header injections
        $test = "/(content-type|bcc:|cc:|to:)/i";
        foreach ( $_POST as $key => $val ) {
            if (preg_match( $test, $val ))
            exit;
        }

        //send email
        mail( "test@gmail.com", "Contact Form: ".$_POST['name'], $_POST['text'], "From:" .      $_POST['email'] );
    }
?>

JS:

$('#contact').submit(function() {
    var name = $("#name").val();
    var email = $("#email").val();
    var message = $("#message").val();
    var dataString = 'name=' + name + '&email=' + email + '&message=' + message;

    $.ajax({
        type : "POST",
        url : "mail.php",
        data : dataString,
        cache : false,
        success : function() {              
            $("#contact").fadeOut(300);
                                $("#notice").fadeIn(400);
        }
    });
    return false;
});

感谢。

1 个答案:

答案 0 :(得分:0)

通过更改:

来尝试preventing the default form submission
$('#contact').submit(function() {
...

$('#contact').submit(function(evt) {
    evt.preventDefault(); 
    //rest of your js code

根据您发布的代码,您没有标识为nameemailmessage的输入元素。将这些作为ID添加到输入元素