弹出框中的jQuery AJAX联系人表单

弹出框中的jQuery AJAX联系人表单,jquery,ajax,Jquery,Ajax,我正在构建一个出现在jQuery弹出框中的联系人表单。单击submit时,它使用AJAX和PHP脚本发送电子邮件。我的问题是,它不起作用。它会继续按常规提交表单,而电子邮件永远不会发送。在.ajax函数中,既不调用success也不调用error函数。这是我的密码: 当您单击此按钮时,弹出窗口将打开:(此部件工作) jQuery脚本: $(function() { $('a.email').click(function(event) { event.preventDe

我正在构建一个出现在jQuery弹出框中的联系人表单。单击submit时,它使用AJAX和PHP脚本发送电子邮件。我的问题是,它不起作用。它会继续按常规提交表单,而电子邮件永远不会发送。在.ajax函数中,既不调用success也不调用error函数。这是我的密码:

当您单击此按钮时,弹出窗口将打开:(此部件工作)


jQuery脚本:

$(function() {
    $('a.email').click(function(event) {
        event.preventDefault();
        $('body').append('<div id="popupshadow"></div><div id="popup"></div>');
        $('#popupshadow').css({opacity:0}).animate({opacity:0.7},1000);
        $('#popup').css({opacity:0}).delay(1200).animate({opacity:1},800);
        $('#popup').html('<form class="contact" action="#" method="none"><table class="contact"><tr><td class="input-name">Name:</td><td><input type="text" name="name" size="25" /></td></tr><tr><td class="input-email">Email:</td><td><input type="email" name="email" size="25" /></td></tr><tr><td class="input-phone">Phone:</td><td><input type="phone" name="phone" size="25" /></td></tr><tr><td class="input-message">Message:</td><td><textarea name="message" cols="20" rows="5"></textarea></td></tr><tr><td></td><td><input type="submit" value="Send" /></td></tr></table><input type="hidden" name="to" value="' + $(this).attr('href').slice(7) + '"/></form><a href="mailto:' + $(this).attr('href').slice(7) + '" class="cancel">Send using your own mail program.</a>');
        $('form.contact').submit(function(event) {
            $('form.contact td').css('color','#000000');

            var name = $('form.contact input[name="name"]').val();
            var email = $('form.contact input[name="email"]').val();
            var phone = $('form.contact input[name="phone"]').val();
            var message = $('form.contact textarea[name="message"]').val();

            var valid = true;
            if(name == "") {
                valid = false;
                $('td.input-name').css('color','#FF0000');
            }
            if(email == "" && phone == "")
                valid = false;
            if(email == "")
                $('td.input-email').css('color','#FF0000');
            if(phone == "")
                $('td.input-phone').css('color','#FF0000');
            if(message == "") {
                valid = false;
                $('td.input-message').css('color','#FF0000');
            }

            if(valid) {
                $.ajax({url : 'http://nickentin.com/design/projects/visionprintmedia/js/contact.php',
                        data : {name : name,
                                email : email,
                                phone : phone,
                                message : message,
                                to : to},
                        type : 'post',
                        success : function(data) {
                            alert("SUCCESS");
                            $('#popup').html('<p style="text-align:center;">Your message has been sent.</p>');
                        },
                        error : function(data) {
                            alert("ERROR");
                        }
                });
            }
            event.preventDefault();
            return false;
        });
        $('#popupshadow, a.cancel').click(function(event) {
            $('#popup, #popupshadow').animate({opacity:0},500).delay(500).queue(function() { $(this).remove(); });
        });
    });
});
$(函数(){
$('a.email')。单击(函数(事件){
event.preventDefault();
$('body')。追加('');
$('popushadow').css({opacity:0}).animate({opacity:0.7},1000);
$('popup').css({opacity:0}).delay(1200).animate({opacity:1},800);
$('#popup').html('Name:Email:Phone:Message:');
$('form.contact')。提交(函数(事件){
$('form.contact td').css('color','#000000');
var name=$('form.contact input[name=“name”]').val();
var email=$('form.contact input[name=“email”]').val();
var phone=$('form.contact input[name=“phone”]').val();
var message=$('form.contact textarea[name=“message”]').val();
var valid=true;
如果(名称==“”){
有效=错误;
$('td.input name').css('color','#FF0000');
}
如果(电子邮件==“”&电话==“”)
有效=错误;
如果(电子邮件==“”)
$('td.input email').css('color','#FF0000');
如果(电话==“”)
$('td.input phone').css('color','#FF0000');
如果(消息==“”){
有效=错误;
$('td.input message').css('color','#FF0000');
}
如果(有效){
$.ajax({url:'http://nickentin.com/design/projects/visionprintmedia/js/contact.php',
数据:{name:name,
电邮:电邮,,
电话:电话,,
讯息:讯息,,
致:致},
键入:“post”,
成功:功能(数据){
警惕(“成功”);
$('popup').html('p style=“text align:center;”>您的邮件已发送。

'; }, 错误:函数(数据){ 警报(“错误”); } }); } event.preventDefault(); 返回false; }); $('popushadow,a.cancel')。单击(函数(事件){ $('popup,'popupshadow')。动画({opacity:0},500)。延迟(500)。队列(函数(){$(this.remove();}); }); }); });
PHP脚本:

<?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];
    $message = $_POST['message'];

    $to = $_POST['to'];
    $subject = 'Contact Form - http://visionprintmedia.com';

    $message = '<style type="text/css">
                    #wrap {
                        width:400px;
                        margin:30px auto;
                        border:1px #000000 solid;
                    }
                    header {
                        width:100%;
                        height:50px;
                        display:block;
                    }
                    header h1 {
                        font-size:18px;
                        margin:0px;
                        padding-left:5px;
                        padding-top:15px;
                    }
                    table {
                        width:100%;
                    }
                    table td {
                        vertical-align:text-top;
                    }
                    table td:first-child {
                        width:75px;
                    }
                    a {
                        color:#333333;
                        text-decoration:none;
                    }
                    a:hover {
                        text-decoration:underline;
                    }
                </style>
                <div id="wrap">
                    <header>
                        <h1>Contact Form - http://visionprintmedia.com</h1>
                    </header>
                    <table>
                        <tr><td>Name:</td><td>'.$name.'</td></tr>
                        <tr><td>Email:</td><td>'.$email.'</td></tr>
                        <tr><td>Phone:</td><td>'.$phone.'</td></tr>
                        <tr><td>Message:</td><td>'.$message.'</td></tr>
                    </table>
                    <footer>
                        This message was sent to '.$to.' as part of an automated contact form.  If you do not believe that you should have received this email, please forward this message to design@nickentin.com and we will resolve the issue.
                    </footer>
                </div>';

    $headers = 'From: noreply@visionprintmedia.com' . "\r\n" .
               'Reply-To: ' . $email . "\r\n" .
               'MIME-Version: 1.0' . "\r\n" .
               'Content-type: text/html; charset=iso-8859-1' . "\r\n" .
               'X-Mailer: PHP/' . phpversion();

    //mail($to,$subject,$message,$headers);
    mail('design@nickentin.com',$subject,$message,$headers); // FOR TESTING ONLY
?>


我有一个现场版本。只需点击其中一个电子邮件链接。谢谢。

您可以在post中获得表单的所有字段。但您在数据中提到的“to”的价值是什么。您已经在php中使用了它
剧本尝试在表单中提供一些值,或删除php脚本中的“$to=$\u POST['to'];”。

您将在POST中获得表单的所有字段。但您在数据中提到的“to”的价值是什么。您已经在php中使用了它
剧本尝试在表单中提供一些值,或删除php脚本中的“$to=$\u POST['to'];”。

您需要在此处更改一些内容:

<form class="contact" action="#" method="none">
PHP脚本中执行以下操作:

if(mail(...))
    die("OK");
else
    die("Error! Unable to send mail!");
在JavaScript中,对于该PHP代码,在AJAX接收函数中使用:

if(response == "OK")
    alert("Mail Sent");
else
    alert(response);

希望这对你有帮助!:)祝你一切顺利!:)

您需要在此处更改一些内容:

<form class="contact" action="#" method="none">
PHP脚本中执行以下操作:

if(mail(...))
    die("OK");
else
    die("Error! Unable to send mail!");
在JavaScript中,对于该PHP代码,在AJAX接收函数中使用:

if(response == "OK")
    alert("Mail Sent");
else
    alert(response);

希望这对你有帮助!:)祝你一切顺利!:)

您需要以AJAX的形式提交表单。查看我关于如何将其作为AJAX输入处理的答案。需要更多解释,请告诉我。您需要以AJAX的形式提交表单。查看我关于如何将其作为AJAX输入处理的答案。需要更多的解释,让我知道。在我关闭表单之前,我有这样一个信息:
重点是,无论您单击什么链接,它都会将“mailto:”后面的地址设置为电子邮件的“to”字段。只需打印post的值,您就会知道“to”中的值。我对“to”值有怀疑啊,我知道发生了什么。我将字段放入表单中,但从未将其转换为变量。现在它起作用了。谢谢你的帮助。在我关闭表单之前,我有这样一个信息:
重点是,无论你点击什么链接,它都会将“mailto:”后面的地址设置为电子邮件的“to”字段。只需打印post的值,你就会知道“to”中的值是什么。我对“to”值有怀疑啊,我知道发生了什么。我将字段放入表单中,但从未将其转换为变量。现在它起作用了。谢谢你的帮助。修好了。谢谢你的帮助。修好了。谢谢你的帮助。
if(response == "OK")
    alert("Mail Sent");
else
    alert(response);