Как я могу вернуть «сбой» Ajax из ASP.NET Контроллер MVC?

#c# #asp.net #ajax #asp.net-mvc

Вопрос:

Я наткнулся на вызов AJAX, который выполнял эти три действия при ответе:

 success: function () {
    alert('Success');
},
failure: function () {
    alert('Failure');
},
error: function (response) {
    alert(response.responseText);
}
 

Я пытаюсь вернуть «неудачу» внутри ASP.NET контроллер, но не уверен, что это возможно:

напр.

     [HttpGet]
    public JsonResult CallFromAjax()
    {
        if (0 > 5)
        {
            return Json(true);
        }
        else
        {
            return Json(false);
        }
    }
 

Я знаю, почему это не работает — ответ все еще успешен, и то, что я буду делать, — это обработка true или false внутри метода Ajax success .

Но что мне на самом деле нужно было бы сделать, чтобы заставить его ответить «неудачей»??

Является ли сбой на самом деле отсутствием ответа (например, возможно, из-за сбоя Интернета), поэтому его нельзя эмулировать?

Как я могу отреагировать на НЕУДАЧУ и как я могу отреагировать на ОШИБКУ?

Комментарии:

1. Установите код состояния ответа, отличный от 200, в другое условие.

Ответ №1:

Я еще немного поискал в Google после того, как нашел результаты только для error и success и да, в основном это была проблема с таймаутом — так что это можно было проверить, реализовав sleep wait функцию или на сервере, я думаю:

Что такое сбой Ajax? Метод $. ajax позволяет установить время ожидания в миллисекундах. Когда наступает тайм-аут, вызывается обратный вызов с ошибкой, для которой установлено значение «тайм-аут». Запрос прерывается, что означает, что даже если ответ придет позже, ваш выполненный обратный вызов не будет вызван jQuery.