0

我有一个通过 jQuery 传递数据的联系表单$.post

JS

$(function () {
    $("#contact_form").submit(function (a) {
        a.preventDefault();
        $.post("<?php echo home_url('/_asset/contact.php'); ?>", {
            contact_name    :   $("#contact_name").val(),
            contact_email   :   $("#contact_email").val(),
            contact_subject :   $("input:radio[name=subject]:checked").val(),
            contact_textarea:   $("#contact_textarea").val(),
            contact_postid  :   $("#contact_postid").val(),
        }, function (a) {
            $("div#response").removeClass("hidden");
            $("div#response").delay(1E3).html(a);
        });
    });
});

联系人.php

$contact_name = $_POST['contact_name'];
$contact_email = $_POST['contact_email'];
$contact_subject = $_POST['contact_subject'];
$contact_message = $_POST["contact_textarea"];
$contact_postid = $_POST['contact_postid'];
$contact_address = $_SERVER['REMOTE_ADDR'];

if( empty($contact_name) && empty($contact_email) && empty($contact_subject) && empty($contact_message) ) {
    die('You must fill out all fields amigo!');
}

// Build that email boy!
if( !empty($contact_postid) ) { $email_id = ' (' . $contact_postid . ')'; }
$email_to        =  'email@example.com';
$email_subject   =  'Contact Form: ' . $contact_subject . $email_id;

$email_header    =  'From: ' . $contact_name . '<' . $contact_email . '>' . "\r\n";
$email_header   .=  'Reply-To:' . $contact_email . "\r\n";
$email_header   .=  'Content-type: text/html; charset=iso-8859-1' . "\r\n";

$email_message   =  nl2br($contact_message);

// Try sending the email
if(!mail($email_to, $email_subject, $email_message, $email_header)){
    $status = 'red';
    die('Error sending email.');
} else {
    $status = 'green';
    die('Email sent!');
}

PHP 表单

<div class="respond_form">
<form method="post" id="contact_form">
    <h2>Let's get contacting!</h2>
    <div id="response" class="hidden alert <?php echo $status; ?>"></div>

    <div class="line">
        <label for="contact_name" title="Please enter your name (required)">Your name <span class="required">*</span></label>
        <input type="text" name="contact_name" id="contact_name" tabindex="1" placeholder="John Smith" required="required"/>
    </div>

    <div class="line">
        <label for="contact_email" title="Please enter your email (required)">Your email (so we can contact you) <span class="required">*</span></label>
        <input type="email" name="contact_email" id="contact_email" tabindex="2" placeholder="mail@example.com" required="required"/>
    </div>


    <?php if( isset($_GET['subject']) ) { ?>
        <input hidden="hidden" name="subject" type="radio" value="<?php echo $_GET['subject']; ?>" checked="checked">
        <?php if( isset($_GET['PostID']) ) { echo '<input hidden="hidden" id="contact_postid" name="postid" type="input" value="' . $_GET['PostID'] . '">'; } ?>
    <?php } else { ?>
        <div class="line">
            <label>What is the message in regards to? <span class="required">*</span></label>
            <ul style="list-style:none; margin: 0; padding: 0;">
                <label style="font-weight:normal;"><input style="margin-right: 10px;" name="subject" type="radio" value="Advertising"<?php if( $_GET['subject'] == 'advertising' ) { echo ' checked="checked"'; } ?>>Advertising</label>
                <label style="font-weight:normal;"><input style="margin-right: 10px;" name="subject" type="radio" value="Contribute an Article"<?php if( $_GET['subject'] == 'contribute' ) { echo ' checked="checked"'; } ?>>Contribute an Article</label>             
            </ul>
        </div>
    <?php } ?> 

    <div class="line">
        <label for="contact_textarea" title="Briefly explain your message (required)">Briefly explain your message <span class="required">*</span></label>
        <textarea name="contact_textarea" id="contact_textarea" rows="10" tabindex="3" maxlength="500" required="required"></textarea>
    </div>

    <input type="submit" id="contact_send" name="contact_send" class="button glow" value="Send Message"/>

</form>
</div>

如您所见,我尝试$statusmail()函数中设置 a ,但没有奏效。我不完全确定整个事情发生了什么(很久以前就发现它并围绕它构建),但我知道die()消息会发送到div#response.

div#response实际上,如果电子邮件成功与否,我希望添加一个类。

哦!并且如果有人想评论缺乏安全性或检查$_POST数据,我已经在这里剥离了它:]

4

1 回答 1

0

$.post 将数据发送到contact.php 并加载其响应。

在您的情况下,响应是可以是“发送电子邮件时出错”的文本。或“已发送电子邮件!” (根据您发布的内容),因此您只需要测试该值并添加相关类。

$(function () {
    $("#contact_form").submit(function (a) {
        a.preventDefault();
        $.post("<?php echo home_url('/_asset/contact.php'); ?>", {
            contact_name    :   $("#contact_name").val(),
            contact_email   :   $("#contact_email").val(),
            contact_subject :   $("input:radio[name=subject]:checked").val(),
            contact_textarea:   $("#contact_textarea").val(),
            contact_postid  :   $("#contact_postid").val(),
        }, function (a) {
            $("div#response").removeClass("hidden").addClass( (a=="Email sent!") ? "email-success" : "email-error" );
            $("div#response").delay(1E3).html(a);
        });
    });
});
于 2013-05-05T12:11:00.217 回答