У меня есть сценарий в 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
}
});
Этот скрипт вызывает действие в контроллере. Контроллер выполняет некоторые действия, и иногда все идет хорошо или нет. Если все идет хорошо, я хочу, чтобы успех и полные параметры в скрипте выполнялись. Нет проблемы до сих пор, но если в контроллере есть ошибка или что-то, что я хочу сказать сценарию: "Эй, есть ошибка!" а затем параметр ошибки в скрипте, который будет выполнен. Как это сделать? Должен ли я возвращать что-то из контроллера скрипту, чтобы указать, что ошибка была сгенерирована, чтобы параметр ошибки в скрипте выполнялся?
Установите код состояния HTTP в 4xx или 5xx в контроллере.
Это заставит вас закончить обратный вызов ошибки.
Используйте 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');
}
Надеюсь это поможет.
Что касается запроса AJAX, то ошибка - это передача/сетевая ошибка при получении страницы.
Если вы хотите вернуть ошибку или вернуть ее в данные, тогда проанализируйте ее и выполните функцию ошибки внутри части успеха, если вы обнаружите ошибку. Или, как говорит Йохан, верните код ошибки HTTP с сервера.