@xibolba

Как обработать ошибку отправки формы?

К сообщению при нажатии кнопки не добавляются стили, при ошибке сообщение зеленое, как понимаю не отрабатывается функция fail_func, как грамотно решить вопрос?
<div class="form">
                <div id="result" class="sent-message alert alert-success alert-danger"></div>
            </div>


.sent-message {
    display: none;
    color: #fff;
    background: #18d26e;
    text-align: center;
    padding: 15px;
    font-weight: 600;

}


(function ($) {
    'use strict';
    var form = $('#post-form'),
        message = $('#result'),
        button = $('#button'),
        form_data;

    // success function
    function done_func(response) {
        message.fadeIn().removeClass('alert-danger').addClass('alert-success');
        message.text(response);
        setTimeout(function () {
            message.fadeOut();
        }, 5000);
    }

    // fail function
    function fail_func(response) {
        message.fadeIn().removeClass('alert-success').addClass('alert-danger');
        message.text(response);
        setTimeout(function () {
            message.fadeOut();
        }, 5000);
    }

    form.submit(function (e) {
        e.preventDefault();
        form_data = $(this).serialize();
        $.ajax({
            type: 'POST',
            url: form.attr('action'),
            data: form_data,
        })
            .done(done_func, form[0].reset())
            .fail(fail_func);
    });
})(jQuery);


@routes.post('/submit_message')
async def message_form(request):
    data = await request.post()
    email, message = data['email'], data['message']
    try:
        await bot.send_message(BOT['id'], text=f'{email}\n{message}')
        return web.Response(text="Сообщение отправлено")
    except Exception as e:
        return web.Response(text="Повторите попытку")
  • Вопрос задан
  • 32 просмотра
Решения вопроса 1
Daemon23RUS
@Daemon23RUS
У Вас return web.Response(text="Повторите попытку") возвращает успешное сообщение, отличается от "Сообщение отправлено" только текстом.
Проработайте логику так, чтобы на post запрос приходил ответ например {status:0,msg:"Сообщение отправлено"} и
{status:1,msg:"Повторите попытку"} и приняв успешно ответ, ориентируйтесь на status
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы