Javascript 使用jqueryajaxphp的表单不会在电子邮件中发送字段输入

Javascript 使用jqueryajaxphp的表单不会在电子邮件中发送字段输入,javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,我有这个联系表单,我正在尝试使用jQuery/AJAX和PHP通过电子邮件将字段输入值发送给我。嗯,电子邮件发送给我很好,但没有任何字段输入。电子邮件只是PHP mail()函数的$to和$subject。请参阅下面的代码。欢迎提出任何意见、批评或建议。谢谢你的帮助 $(document).ready(function() { $(function() { // Get the form. var form = $('#ajax-contact'); // Get the mess

我有这个联系表单,我正在尝试使用jQuery/AJAX和PHP通过电子邮件将字段输入值发送给我。嗯,电子邮件发送给我很好,但没有任何字段输入。电子邮件只是PHP mail()函数的$to和$subject。请参阅下面的代码。欢迎提出任何意见、批评或建议。谢谢你的帮助

$(document).ready(function() {    

$(function() {

// Get the form.
var form = $('#ajax-contact');

// Get the messages div.
//var formMessages = $('#form-messages');

// Set up an event listener for the contact form.
$("button").click(function(e) {

    // Stop the browser from submitting the form.
    e.preventDefault(e);

    // Serialize the form data.
    var formData = $(form).serialize();

    // Submit the form using AJAX.
    $.ajax({
        type: 'POST',
        url: $(form).attr('action'),
        data: formData,
        success: function(result){
            $('#contact-name').val('');
            $('#contact-email').val('');
            $('#contact-website').val('');
            $('#contact-message').val('');
        },
        error: function(xhr,status,error){

        }
    });


});
}))

}))

使用
val()
函数从输入获取数据

$(document).ready(function(e) {

$("button").click(function(e) {
e.preventDefault();
    var ajax = {
        isSubmitting: false,
        send: function() {
            if(ajax.isSubmitting == false) {

                ajax.isSubmitting = true;
                var userName = $('input[name="contact-name"]').val(); 
                var userEmail = $('input[name="contact-email"]').val(); 
                var userWebsite = $('input[name="contact-website"]').val(); 
                var userMessage = $('input[name="contact-message"]').val(); 

                if(userName === "" || userEmail === "" || userWebsite === "" || userMessage === "") {
                    alert("Please fill out all required fields.");
                } 
                else {
                    $.post("mailer3.php", {
                        name: userName,
                        email: userEmail,
                        website: userWebsite,
                        message: userMessage

                    }, function(data) {

                        ajax.isSubmitting = false;

                    });
                }
            }
            else alert("Send only 1 email at a time.");
        }
    }

});
尝试使用$.ajax执行此操作:

$("button").click(function(){
     isSubmitting: false;
     var userName = $('input[name="contact-name"]').val(); 
     var userEmail = $('input[name="contact-email"]').val(); 
     var userWebsite = $('input[name="contact-website"]').val(); 
     var userMessage = $('input[name="contact-message"]').val(); 

    if(isSubmitting == false) {

    $.ajax({url: "mailer3.php",
            type:'POST',
            data:{
            name: userName,
            email: userEmail,
            website: userWebsite,
            message: userMessage
             },
            success: function(result){
               isSubmitting == true;
            },error(xhr,status,error){
               isSubmitting == false;
            }
    });

    }
});

因为您没有使用jQquery val();方法检索您的输入值,这就是您无法获取值的原因。使用chain方法val()调用元素,如下所示

`$(文档).ready(函数(e){ //e、 预防默认值(); $(“按钮”)。单击(功能(e){


我最终还是弄明白了。我修改过的代码位于顶部,是我用来发送带有数据的电子邮件的代码。使用的是SwiftMailer。只需完成几件事。谢谢大家在这方面的投入


Andrew

谢谢你的建议。我试过了,但电子邮件中仍然没有字段输入值。发件人地址也显示为我的主机帐户用户名@主机URL,这对我来说似乎很奇怪,或者我对它了解不够。但是还有其他建议吗?我的“名称”jQuery中的attr匹配我的HTML文件,而那些又匹配我的PHP,我不知所措。谢谢!var_转储post值并在响应中查看它们是否正确,如果正确,您的邮件函数和变量madalin ivascu有问题,这是一个好主意。这只是在PHP文件的末尾。抱歉,不是太了解关于PHP。但这带来了一些奇怪的东西。在Firebug的控制台中,人们通常会看到POST/Response等,我根本看不到。谢谢!这意味着您的ajax请求没有发生。您调用ajax的方法我不太熟悉,我可以看到您正在使用ajax请求创建对象,为什么你不是在做一个简单的
$吗。ajax
成功后,你隐藏了ajax表单并显示了一个mesaje?谢谢,但我最终还是尝试了这个方法,但令人惊讶的是,它没有起作用。我想这是解决方案,但仍然没有通过电子邮件发送的数据,只有$to和$subject。还有其他建议吗?提前谢谢!
$(document).ready(function(e) {

$("button").click(function(e) {
e.preventDefault();
    var ajax = {
        isSubmitting: false,
        send: function() {
            if(ajax.isSubmitting == false) {

                ajax.isSubmitting = true;
                var userName = $('input[name="contact-name"]').val(); 
                var userEmail = $('input[name="contact-email"]').val(); 
                var userWebsite = $('input[name="contact-website"]').val(); 
                var userMessage = $('input[name="contact-message"]').val(); 

                if(userName === "" || userEmail === "" || userWebsite === "" || userMessage === "") {
                    alert("Please fill out all required fields.");
                } 
                else {
                    $.post("mailer3.php", {
                        name: userName,
                        email: userEmail,
                        website: userWebsite,
                        message: userMessage

                    }, function(data) {

                        ajax.isSubmitting = false;

                    });
                }
            }
            else alert("Send only 1 email at a time.");
        }
    }

});
$("button").click(function(){
     isSubmitting: false;
     var userName = $('input[name="contact-name"]').val(); 
     var userEmail = $('input[name="contact-email"]').val(); 
     var userWebsite = $('input[name="contact-website"]').val(); 
     var userMessage = $('input[name="contact-message"]').val(); 

    if(isSubmitting == false) {

    $.ajax({url: "mailer3.php",
            type:'POST',
            data:{
            name: userName,
            email: userEmail,
            website: userWebsite,
            message: userMessage
             },
            success: function(result){
               isSubmitting == true;
            },error(xhr,status,error){
               isSubmitting == false;
            }
    });

    }
});
var ajax = {
    isSubmitting: false,
    send: function() {
        if(ajax.isSubmitting == false) {

            ajax.isSubmitting = true;
            var userName = $("input[name=contact-name]").val(); 
            var userEmail = $("input[name=contact-email]").val(); 
            var userWebsite = $("input[name=contact-website]").val(); 
            var userMessage = $("input[name=contact-message]").val(); 

            if(userName === "" || userEmail === "" || userWebsite === "" || userMessage === "") {
                alert("Please fill out all required fields.");
            } 
            else {
                $.post("mailer3.php", {
                    name: userName,
                    email: userEmail,
                    website: userWebsite,
                    message: userMessage

                }, function(data) {

                    ajax.isSubmitting = false;

                });
            }
        }
        else alert("Send only 1 email at a time.");
    }
} `