29
Фев
2020

Json ответ в ajax

Есть форма регистрации, которая работает с помощью ajax

$('.login__form').submit(function(e) {
    e.preventDefault();
    $.ajax({
        url: 'Registration.php',
        dataType: 'text',
        type: 'POST',
        data: {
            login: login,
            password: pass1,
            email: email,
            referral: referral
        },
        success: function(res) {

            console.log(res);
            console.log(res.message);
            console.log(res.color);
        },
        error: function() {
            Notification('Error!');
        }

    });
});

В файле registration.php прописаны различные проверки на существование почты логина и тд, и соответствующие им оповещения об ошибках, например, если письмо отправлено на почту:

if ($mail->send())
                {
                    $message = 'Message Send. Check your E-mail!';
                    $color = 'green';
                    $out = array(
                        'message' => $message,
                        'color' => $color
                    );

                    header('Content-Type: text/json; charset=utf-8');
                    echo json_encode($out);
                    die;
                }

Но команды:

console.log(res);
console.log(res.message);
console.log(res.color);

Выводят в консоль следующее:

{"message":"Message Send. Check your E-mail!","color":"green"}2020-02-29 02:19:47 CLIENT -&gt; SERVER: QUIT<br>
undefined
undefined

Почему res.message и res.color приходят как undefined?

UPDATE Виновником является phpMailer, удалил все что связано с отправкой сообщения зарегистрированному пользователю и оставил только оповещение об успешном добавлении в БД, в случае успеха. В итоге запись добавилась, и оповещение появилось, как теперь быть с отправкой почты? Может что-то не так в моих настройках мейлера? Вот код:

$mail = new PHPMailer\PHPMailer\PHPMailer();
                $mail->SMTPAuth = true;
                $mail->isSMTP();
                $mail->CharSet = "UTF-8";
                $mail->SMTPKeepAlive = true;
                $mail->SMTPAuth = true;
                $mail->Host = 'mail.domain';
                $mail->Username = 'domain@mail';
                $mail->Password = '';
                $mail->SMTPSecure = 'tls';
                $mail->Port = 587;
                $mail->setFrom('domain@mail', 'domain@mail');
                $mail->addAddress($email);
                $mail->SMTPOptions = array(

                    'ssl' => array(
                        'verify_peer' => false,
                        'verify_peer_name' => false,
                        'allow_self_signed' => true
                    )
                );
                $mail->isHTML(true);
                $mail->Subject = $title;
                $mail->Body = "$messageEmail";
Источник: https://ru.stackoverflow.com/questions/1088850/json-%D0%BE%D1%82%D0%B2%D0%B5%D1%82-%D0%B2-ajax
Share

Тебе может это понравится...