带有单选按钮的 PHP 邮件程序表单使用 AJAX 发送

标签 php javascript ajax phpmailer mailer

TL; DR 解决方案: 将 javascript 中的 .val 更改为任何 radio 输入的 .serialize。

我一直在使用 this tutorial构建一个表单,当按下提交按钮时,淡出按钮并淡入“谢谢”消息并在后台发送 mailer.php。我的表单有单选按钮,我似乎无法弄清楚如何让 javascript 将选中的按钮发送到我的电子邮件。

这是表单 html:

<form action="" method="" name="rsvp" id="rsvp-form">
<fieldset>
                <legend>RSVP</legend>

                    <ol>
                        <li>
                            <input id="accepts1" class="rsvps" name="rsvps" type="radio" value="Graciously_Accepts" />
                            <label for="accepts1">Graciously Accepts</label>
                        </li>
                        <li>
                            <input id="declines1" class="rsvps" name="rsvps" type="radio" value="Regretfully_Declines" />
                            <label for="declines1">Regretfully Declines</label>
                        </li>
                        <li>
                            <input id="accepts2" class="rsvps" name="rsvps" type="radio" value="Regretfully_Accepts" />
                            <label for="accepts2">Regretfully Accepts</label>
                        </li>
                        <li>
                            <input id="declines2" class="rsvps" name="rsvps" type="radio" value="Graciously_Declines" />
                            <label for="declines2">Graciously Declines</label>
                        </li>
                    </ol>
            </fieldset>
<div id="rsvp-wrapper">
    <fieldset>
     <button class="button" type="submit" value="send">RSVP!</button>
</fieldset>

</form>
<div class="success"></div>
</div>

JavaScript:

<script type="text/javascript">

$(function() {  

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

var rsvps = $(".rsvps").val();

var dataString = 'rsvps=' + rsvps;  

    $.ajax({  
      type: "POST",  
      url: "rsvp-mailer.php",  
      data: dataString,  
      success: function() {  
        $('#rsvp-wrapper').html("<div class='success'></div>");  
        $('.success').html("<p class='italic'>Thanks!</p>")   
        .hide()  
        .fadeIn(500, function() {  
          $('.success');  
        });  
      }  
    });  
    return false;   
});  
});  

</script>

还有 mailer.php:

<?php 

$rsvps = $_POST['rsvps'];

$formcontent="

RSVP: $rsvps \n";

$recipient = "myemail@domain.com";

$subject = "RSVP";

$mailheader = "RSVP \r\n";

mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");

?>

非常感谢您提供的任何见解。

最佳答案

试一试。参见 jQuery.post()了解更多信息。

<script type="text/javascript">
    $('form').submit(function() {
        var data = $(this).serialize();

        $.post("rsvp-mailer.php", data, function() {
            $('#rsvp-wrapper').html("<div class='success'></div>");  
            $('.success').html("<p class='italic'>Thanks!</p>")   
            .hide()  
            .fadeIn(500, function() {  
                $('.success');  
            });  
        }

    return false;
    }
</script>

关于带有单选按钮的 PHP 邮件程序表单使用 AJAX 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12548759/

相关文章:

PHP:数组搜索组

php - 为什么我们把 mysql 写在 $conn = new pdo(); 中如果 PDO 与平台无关

php:重定向到引用网址,但在查询字符串中添加一些内容

javascript - 从 ExtJS 中的 Store 访问数据?

javascript - 什么是保留在 Knockout 扩展中创建的自定义属性的好模式?

javascript - 无法从其他 Javascript 文件访问变量

javascript - 轮询卡住、Pebble.js、ajax、node.js

javascript - jQuery Ajax HTTP 请求进入点击功能 - 不工作

javascript - 每 5 秒自动刷新一个 DIV 代码不工作

php - Yii 向 CDbCriteria 添加一个选择