Проверка успешности, ошибок и полных статусов в скрипте ajax

0

У меня есть сценарий в asp.net mvc:

       $.ajax({
           url: "/MyController/MyAction/",
           type: 'POST',
           data: $("#Myform").serialize(),
           success: function () {
               // Do something
           },
           error: function () {
               // Do something
           },
           complete: function () {
               // Do something                 
           },
           beforeSend: function () {
               // Do someting
           }
       });

Этот скрипт вызывает действие в контроллере. Контроллер выполняет некоторые действия, и иногда все идет хорошо или нет. Если все идет хорошо, я хочу, чтобы успех и полные параметры в скрипте выполнялись. Нет проблемы до сих пор, но если в контроллере есть ошибка или что-то, что я хочу сказать сценарию: "Эй, есть ошибка!" а затем параметр ошибки в скрипте, который будет выполнен. Как это сделать? Должен ли я возвращать что-то из контроллера скрипту, чтобы указать, что ошибка была сгенерирована, чтобы параметр ошибки в скрипте выполнялся?

Теги:
asp.net-mvc
asp.net-mvc-4

3 ответа

2
Лучший ответ

Установите код состояния HTTP в 4xx или 5xx в контроллере.

Это заставит вас закончить обратный вызов ошибки.

1

Используйте try catch в своем действии, например,

public ActionResult Sample()
{

try
{
return Json(new{status="success"},JsonRequestBehavior.AllowGet);
}
catch(Exception ex)
{
return Json(new{status="failed"},JsonRequestBehavior.AllowGet);
}
}

В вашей проверке успеха ajax call с условием вроде,

if(data.status=='success')
{
alert('All Happies');
}
else
{
alert('error came');
}

Надеюсь это поможет.

1

Что касается запроса AJAX, то ошибка - это передача/сетевая ошибка при получении страницы.

Если вы хотите вернуть ошибку или вернуть ее в данные, тогда проанализируйте ее и выполните функцию ошибки внутри части успеха, если вы обнаружите ошибку. Или, как говорит Йохан, верните код ошибки HTTP с сервера.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню