发送php邮件后,ajax会发出一条错误消息进行响应
我试图在通过AJAX发送邮件后显示状态信息。 邮件发送时没有问题,但它显示的不是成功消息,而是错误消息。 在我看来,json数据应该是有效的。 也许你能帮我,向菲尔曼问好 jQuery代码:发送php邮件后,ajax会发出一条错误消息进行响应,php,jquery,ajax,email,Php,Jquery,Ajax,Email,我试图在通过AJAX发送邮件后显示状态信息。 邮件发送时没有问题,但它显示的不是成功消息,而是错误消息。 在我看来,json数据应该是有效的。 也许你能帮我,向菲尔曼问好 jQuery代码: $(document).ready(function() { $('#send_btn').click(function(event) { event.preventDefault(); $.ajax({ dataType: 'json',
$(document).ready(function() {
$('#send_btn').click(function(event) {
event.preventDefault();
$.ajax({
dataType: 'json',
url: $('#contact').attr('action'),
type: "POST",
data: $('#contact').serialize(),
beforeSend: function() {
$('#send_btn').html('sendet...');
},
success: function(response) {
if(response) {
if(response['signal'] == 'ok') {
$('#msg').html('<div class="alert_success">' + response['msg'] + '</div>');
$('input, textarea').val(function() {
return this.defaultValue;
});
} else {
$('#msg').html('<div class="alert_warning">' + response['msg'] + '</div>');
}
}
},
error: function() {
$('#msg').html('<div class="alert_warning">Es ist ein Fehler aufgetreten, bitte versuchen Sie es erneut.</div>');
},
complete: function() {
$('#send_btn').html('Abschicken');
},
});
});
});
$(文档).ready(函数(){
$('send#btn')。单击(函数(事件){
event.preventDefault();
$.ajax({
数据类型:“json”,
url:$('#contact').attr('action'),
类型:“POST”,
数据:$(“#联系人”).serialize(),
beforeSend:function(){
$('send#btn').html('sendet…');
},
成功:功能(响应){
如果(响应){
如果(响应['signal']='ok'){
$('#msg').html(''+响应['msg']+'');
$('input,textarea').val(函数(){
返回此.defaultValue;
});
}否则{
$('#msg').html(''+响应['msg']+'');
}
}
},
错误:函数(){
$('#msg').html('s ist ein Fehler aufgetreten,bite versuchen Sie Es ernut');
},
完成:函数(){
$('send#btn').html('Abschicken');
},
});
});
});
RequestHandler-使用SMTP发送邮件:
<?php
// Import PHPMailer classes into the global namespace
use PHPMailer\PHPMailer\PHPMailer;
//Load composer's autoloader
require 'phpmailer/vendor/autoload.php';
//Empfänger E-Mail
$recipient = 'recipient';
//Formularfelder
$vname = trim($_POST['vname']);
$name = trim($_POST['name']);
$email = trim($_POST['email']);
$message = trim($_POST['message']);
if($name != null && $email != null && $message != null) {
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
$mail = new PHPMailer(true);
//Server settings
$mail->isSMTP();
$mail->SMTPDebug = 3;
$mail->Host = 'smtp.1und1.de';
$mail->SMTPAuth = true;
$mail->Username = 'username';
$mail->Password = 'passowrd';
$mail->SMTPSecure = 'tls';
$mail->Port = 25;
//Recipients
$mail->setFrom("$recipient", 'recipient');
$mail->addAddress("$recipient", 'recipient');
$mail->addReplyTo($email, $name);
$body = "<p><strong>Name: </strong>$vname $name <br> <strong>Nachricht: </strong>$message</p>";
//Content
$mail->isHTML(true);
$mail->Subject = 'Kontaktformular';
$mail->Body = $body;
$mail->AltBody = strip_tags($body);
if(!$mail->send()){
$signal = 'bad';
$msg = 'Mailer Error: ' . $mail->ErrorInfo;
} else {
$signal = 'ok';
$msg = 'Nachricht versendet, vielen Dank!';
}
} else {
$signal = 'bad';
$msg = 'Ungültige E-Mail-Adresse, bitte versuchen Sie es erneut.';
}
} else {
$signal = 'bad';
$msg = 'Bitte füllen Sie alle erforderlichen Felder aus.';
}
$data = array(
'signal' => $signal,
'msg' => $msg
);
echo json_encode($data);
在浏览器中调试调用时,PHP会返回什么响应代码?您的web服务器错误日志中有什么内容?(我在您的PHP文件中看到的第一件事是,在引入自动加载器之前,您使用ing PHPMailer。您确定您的PHP函数能正常工作吗?如果它抛出了一个服务器错误,可以解释您看到的情况。在编写jQuery之前,使用类似的工具可以方便地让PHP正常工作…)您没有指定它是在成功函数还是在错误函数中显示错误消息。控制台没有显示任何错误,或者您的确切意思是什么?您得到的确切错误是什么,是来自if($mail->send())
的else块的错误吗?这是一个愚蠢的问题,但我不得不问它,因为您没有输入您得到的确切错误消息。就我个人而言,我会将这一行改为if(response['signal']='ok'){
改为if(response.signal&&response.signal='ok')){
但这是吹毛求疵,可能不是你的问题。如果响应,它将避免错误。信号
未定义,但…@philman-这是Ajax请求中的错误函数,对吗?这意味着后端脚本中的某些内容失败,你应该使用浏览器调试窗口检查网络请求(通常F12
)然后他们中的大多数都有一个网络面板。它可以是一个简单的东西,比如404未找到错误
lolAbschicken
不确定那是什么语言,但我看到Abschicken
ha haw当你在浏览器中调试调用时,你从PHP中得到了什么响应代码?你的web服务器错误日志中有什么?(我在您的PHP文件中看到的第一件事是,在引入自动加载器之前,您使用ing PHPMailer。您确定您的PHP函数能正常工作吗?如果它抛出了一个服务器错误,可以解释您看到的情况。在编写jQuery之前,使用类似的工具可以方便地让PHP正常工作…)您没有指定它是在成功函数还是在错误函数中显示错误消息。控制台没有显示任何错误,或者您的确切意思是什么?您得到的确切错误是什么,是来自if($mail->send())的else块的错误吗
这是一个愚蠢的问题,但我不得不问你,因为你没有把你收到的确切错误信息放进去。我个人会把这行改成if(response['signal']='ok'){
改成if(response.signal&&response.signal='ok')){
但这是吹毛求疵,可能不是你的问题。如果响应,它将避免错误。信号
未定义,但…@philman-这是Ajax请求中的错误函数,对吗?这意味着后端脚本中的某些内容失败,你应该使用浏览器调试窗口检查网络请求(通常是F12
)然后他们中的大多数都有一个网络面板。它可能是像404找不到错误这样简单的东西
lolAbschicken
不确定那是什么语言,但我看到了Abschicken
哈哈