使用 Jquery 的 PHPMailer 联系表

我使用 phpmailer 创建了联系表单。并且,它正在工作并且可以正常发送电子邮件。但是,它确实在 php 文件中重定向,然后显示成功消息。

我想在同一个联系表单 html 页面上显示消息。并且,我使用下面的 ajax jquery 来实现这一点。但是,邮件不发送。并在同一表单 html 页面上收到以下消息。

文档有问题!

我该如何解决这个问题?

JS代码

(function ($) {

    "use strict";


    var form = $('#contact-form'); // contact form

    var submit = $('#submit-btn'); // submit button

    

            // form submit event

            form.on('submit', function(e) {

                e.preventDefault(); // prevent default form submit

                $.ajax({

                    url: 'php/mail.php', // form action url

                    type: 'POST', // form submit method get/post

                    dataType: 'html', // request type html/json/xml

                    data: form.serialize(), // serialize form data

                    beforeSend: function() {

                        

                        submit.attr("disabled", "disabled");                    

                        var loadingText = '<span role="status" aria-hidden="true" class="spinner-border spinner-border-sm align-self-center mr-2"></span>Sending.....'; // change submit button text

                        if (submit.html() !== loadingText) {

                            submit.data('original-text', submit.html());

                            submit.html(loadingText);

                        }

                    },

                    success: function(data) {

                        //$('.alert-dismissible').remove();

                        submit.before(data).fadeIn(); // fade in response data 

                        form.trigger('reset'); // reset form

                        submit.html(submit.data('original-text'));// reset submit button text

                        submit.removeAttr("disabled", "disabled");

                    },

                    error: function(e) {

                        alert('error');

                    }

                });

            });

})(jQuery);


白板的微信
浏览 124回答 2
2回答

潇潇雨雨

我遇到了同样的问题,我用带有随机名称的表单中的隐藏输入来解决,例如:<input type="hidden" name="test">然后在 php 文件中:if(isset($_POST['test'])) {工作中,问题的出现是因为form.serialize()或new FormData()不使用提交按钮。

杨魅力

您必须删除,action="php/mail.php" method="post"因为这是由 jQuery 处理的,您必须添加一个隐藏的输入,例如<input type="hidden" name="iamhidden" />表单,然后将其替换if(isset($_POST['submit']))为if(isset($_POST['iamhidden']))
打开App,查看更多内容
随时随地看视频慕课网APP