【问题标题】:PHP mail checkbox $_POSTPHP 邮件复选框 $_POST
【发布时间】:2012-03-23 10:58:09
【问题描述】:

我正在通过 AJAX post call 运行一个表单,但我的复选框上的值保持不变,无论我在处理邮件脚本时是选中还是取消选中它。

我希望在未选中时更改值。所以取消选中复选框会将值更改为“否”等。

这是我的代码,我做错了什么?

<input type="checkbox" name="newsletter" id="newsletter" checked="checked" value="1"/>

Ajax 调用在这里:

$(document).ready(function(){
    $("#submitButton").click(function() {
        // PROCESS FORM
        var name = $("#name").val();
        var email = $("#email").val();
        var phone = $("#phone").val();
        var postal = $("#postal").val();
        var newsletter = $("#newsletter").val();
        var dataString = 'name='+ name + '&email=' + email + '&phone=' + phone + '&postal=' + postal+ '&newsletter=' + newsletter;

        if (name=='' || name=='First Name' ){
            $('#name').removeClass("reg-bg");
            $('#name').addClass("error-bg");
        }
        if (email=='' || email=='Email Address'){
            $('#email').removeClass("reg-bg");
            $('#email').addClass("error-bg");           
        }
        if (postal=='' || postal=='Postal Code'){
            $('#postal').removeClass("reg-bg");
            $('#postal').addClass("error-bg");
            return false;
        }

        else {
        $.ajax({
            type: "POST",
            url: "mailer.php",
            data: dataString,           
            success: function(){
                    $(".formPanel").slideUp(200);
                    $(".formPanel2").delay(600).slideDown(200);
                }
        });     
        }

        return false;

    }); 
});

此处为 PHP 邮件脚本:

<?php
$to ="xxxx@name.com";

    $name = $_POST['name'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];
    $postal = $_POST['postal'];
    $newsletter = $_POST['newsletter'];

$subject = "FREE TRIAL INQUIRY";
$headers = "From: ".$email;
$body = "This person has requested a FREE TRIAL at the studio nearest them...

Name: $name
Email: $email 
Phone: $phone
Postal: $postal
Newsletter: $newsletter";

mail($to, $subject, $body, $headers);
?>

【问题讨论】:

    标签: php html ajax forms checkbox


    【解决方案1】:
    $('#newsletter').click(function(){
        if($(this).val() == 1) {
            $(this).val('no');
    
            // I'd recommend doing it this way for consistency sake
            $(this).val(0);
        }
    });
    

    【讨论】:

    • 这也不起作用。我假设这与实际的邮件脚本之间存在冲突。
    【解决方案2】:

    无论在使用jQuery查看它的值时是否选中,复选框的值始终为1。
    您需要做的是查看复选框是否被选中:

    var newsletter = $("#newsletter").is(":checked")?1:0;
    

    【讨论】:

    • 我实际上将它与上面的 Ben Ashton 评论结合起来,效果很好(我想要 Ben 的 YES/NO 值而不是 1/0)。
    【解决方案3】:

    您必须在 PHP 邮件脚本中检查复选框的值,并稍有不同的处理方式。

    我的方法是这样做:

    if(isset($_POST['newsletter'])&&$_POST['newsletter']==1) $newsletter="yes"; else $newsletter="no";
    

    在这种情况下,您正在使用 PHP 来确定值,因为复选框只能有一个值!如果选中,则该值将是 html 值的值,但在我的示例中,我们仅在 if 语句中使用 HTML 字段的值:

    if (isset($_POST['newsletter'])) //检查该元素是否存在于表单提交中,并且

    $_POST['newsletter']==1 //检查复选框是否被选中。如果您回显$_POST['newsletter'] 的值,它将始终为1,因此您需要调整邮件脚本的逻辑,以便使用“如果选中,则为是;否则为否”的样式。

    【讨论】:

    • 没用..你在哪里嵌入这个?说确实有错误。
    • 那是因为他的代码中有一个左括号以及其他问题
    • 啊,我发帖后才看到。值变为yes,但是当我取消选中时,值仍然保持不变......很奇怪。有什么建议吗?
    猜你喜欢
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 2015-07-23
    • 2015-11-09
    相关资源
    最近更新 更多