Как вывести сообщение об ошибке в ajax-запросе?

Есть скрипт, который отправляет данные из формы. Но он при любых обстоятельствах выдает алерт 'Ваше сообщение отправлено!' Как сделать другой алерт при ошибке отправки?

 $('form').on('submit', function (e) {
  e.preventDefault();
  var form = $(this).serializeArray();
  var action = $(this).attr('action');
  console.log(action);
  $.post(
      myajax.url, {
          form: form,
          action: action
      },
      function (data) {
          for (var i = 0; i < $('form').length; i++) {
              $('form')[i].reset();
          }
          alert('Ваше сообщение отправлено!');
          $(this).find('input[name="submit"]').toggleClass('is-disabled', true);
      }
  )
});

Ответы (1 шт):

Автор решения: Yaroslav Molchan

Правильней мне кажется будет использовать метод fail как вариант, но для этого нужно с сервера и отдавать код ответа ошибки, не 200.

$.post(myajax.url, {form: form, action: action})
.done(function(data) {
  for (var i = 0; i < $('form').length; i++) {
      $('form')[i].reset();
  }
  alert('Ваше сообщение отправлено!');
  $(this).find('input[name="submit"]').toggleClass('is-disabled', true);
})
.fail(function(xhr, textStatus, errorThrown) {
    alert(xhr.responseText);
});

Или есть вариант проще, оставить как есть, только в data отдавать результат и исходя из этого отдавать текст в alert

→ Ссылка