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

contact.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 に答える