发送php邮件后,ajax会发出一条错误消息进行响应

发送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',

我试图在通过AJAX发送邮件后显示状态信息。 邮件发送时没有问题,但它显示的不是成功消息,而是错误消息。 在我看来,json数据应该是有效的。 也许你能帮我,向菲尔曼问好

jQuery代码:

$(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未找到错误
lol
Abschicken
不确定那是什么语言,但我看到
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找不到错误这样简单的东西
lol
Abschicken
不确定那是什么语言,但我看到了
Abschicken
哈哈