Как обрабатывать ответ ajax-формы?

На странице есть таблица и форма, которая позволяет добавлять запись в бд . Форма отправляется на сервер ajax-запросом. Нужно на сервере валидировать форму. Если в ней есть ошибки - передавать модель из контроллера обратно в форму и выводить описание ошибок. Если ошибок в форме нет - обновлять таблицу.

Вот так работает контроллер:

[HttpPost]
        public ActionResult Add(NewsViewModel news)
        {
            if (ModelState.IsValid)
            {
                //сохраняем все в бд...
                
                return View('NewsList', db.News);
            }
            return View(news);
        }


Как различить эти 2 ответа на стороне клиента, чтобы знать, что с ними делать?
  • Вопрос задан
  • 1441 просмотр
Пригласить эксперта
Ответы на вопрос 2
RainMEN
@RainMEN
HTML/STYLUS/JADE/JS/Laravel/Joomla/DLE и т.д.
Для передачи данных из скрипта используйте JSON.

Для примера :

var success = 'Ваше сообщение успешно доставлено! </br> Благодарим за обращение :)'


$('form').submit(function(e){

    var form = $(this);

    $.ajax({
        type: form.attr('method'),
        data: form.serialize(),
        dataType: "json",
        url: form.attr('action'),
        beforeSend: function() {
            //alert('Подождите');
            //показываем загрузку если она нужна
            //можем выключать кнопку отправки
        },
        success: function(data) {
            if (data == 1){
                form.children('.alert').removeClass('danger').addClass('success').html(success);
            }
            else {
                form.children('.alert').removeClass('success').addClass('danger').html(data.errors);
            }
        }
    });

    e.preventDefault();

});


из PHP передаете как то так

$data = ['errors' => 'сюда пишите ошибку'];
                return json_encode($data);
Ответ написан
@konar Автор вопроса
Тег asp.net mvc Вас не смутил?
Ок. Тогда скажите мне как в контроллере получить строку с разметкой частичного представлеия...
Ответ написан
Ваш ответ на вопрос

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

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