@codecreator

Как отбразить ошибку через Ajax?

Добрый день. Есть ajax, который проверяет никнейм на занятость. Во вьюхе проверка проходит. Каким образом можно отобразить результат проверки (ошибку) в форме с помощью ajax? Какой ответ надо вернуть?

При отправке формы ошибки отображаются таким образом:

form.errors['__all__'] = form.error_class([...])
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
views.py
class SomeFormHandler(FormView):
    def form_invalid(self, form):
        if self.request.is_ajax():
            data = {'status': 'error', 'erros': []}
            for field, errors in form.errors.items():
                for error in errors:
                    data['errors'].append({'key': field, 'desc': error})
            return JsonResponse(data)
        else:
            ...

script.js (Bootstrap + jQuery)
$.post($(form).attr('action'), $(form).serialize(), function(result) {
    if(result.status == 'ok') {
        form.reset();
        showAlert('Сообщение успешно отправлено', 'success');
    }
    else if(result.status == 'error') {
        for(var ndx in result.errors) {
            if(result.errors[ndx].key == '__all__') showAlert(result.errors[ndx].desc);
            $(form).find('[name=' + result.errors[ndx].key + ']').parent().addClass('has-error');
        }
    }
}).fail(function(xhr, textStatus, error) {
    showAlert('Ошибка отправки сообщения');
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы