我使用 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);
2 回答
潇潇雨雨
TA贡献1833条经验 获得超4个赞
我遇到了同样的问题,我用带有随机名称的表单中的隐藏输入来解决,例如:
<input type="hidden" name="test">
然后在 php 文件中:
if(isset($_POST['test'])) {
工作中,问题的出现是因为form.serialize()
或new FormData()
不使用提交按钮。
杨魅力
TA贡献1811条经验 获得超6个赞
您必须删除,action="php/mail.php" method="post"
因为这是由 jQuery 处理的,您必须添加一个隐藏的输入,例如<input type="hidden" name="iamhidden" />
表单,然后将其替换if(isset($_POST['submit']))
为if(isset($_POST['iamhidden']))
- 2 回答
- 0 关注
- 117 浏览
添加回答
举报
0/150
提交
取消