Что возвратить из ASP.NET действие MVC, чтобы позволить jQuery ajax событие успеха стрелять?

Прямо сейчас мой ajax отправляет весь огонь их события Error, даже если действие не вызвало ошибку. У меня есть действие MVC ASP.NET, которое похоже:

[AcceptVerbs(HttpVerbs.Post)]
public virtual ActionResult StuffToDo(int id)
{
     // do various things that work ...
     return new JsonResult(); // i have to return something, so this...
}

На стороне клиента у меня есть этот jQuery:

$('#actionClick').click(function() {
     if (confirm('Are you sure?')) {
         $.ajax({
             type: "POST",
             url: "/Customer/StuffToDo/<%= Model.Customer.Id %>",
             contentType: "application/json; charset=utf-8",
             data: "{}",
             dataType: "json",
             success: function() {
                 ShowSuccessResult("Yay!");
             },
             error: function(xhr, ajaxOptions, thrownError) {
                 ShowErrorResult("Boo! Message:" + xhr.responseText);
             }
         });
      }
      return false;
 });

Если бы действие успешно (никакие выданные исключения) затем, я ожидал бы, что обработчик событий успеха будет инициирован. Вместо этого ошибочное событие стреляет. Есть ли что-то, что я должен пасовать назад или изменить в действии так огни события успеха?

Я понимаю, что этим вопросом является в основном то же как этот другой вопрос, но мой обработчик ошибок уже имеет расширенную подпись, которая решила вопрос другого человека.

Я изменил возвращаемое значение на Пустой указатель, чтобы видеть, влияло ли это на что-нибудь, но никакое изменение поведения.

Его запуск быть похожим на это является проблемой с HTTPS. Я получаю множественные ответы от запроса. Первые 2 являются 401 сообщением, и затем я получаю 200.

22
задан Zoe 23 May 2019 в 18:56
поделиться

2 ответа

Я считаю, что проблема в том, что вы ничего не возвращаете в JsonResult. Попробуйте:

return this.Json(string.Empty);

и посмотрите, работает ли это. Я думаю, проблема в том, что вы ничего не возвращаете вызову jQuery, а не возвращаете пустой набор JSON:

{}
37
ответ дан 29 November 2019 в 03:49
поделиться

Возврат пустого результата также может быть полезен

return new EmptyResult();

Примечание: Тип возвращаемого значения не обязательно должен быть ActionResult или событием, наследуемым от него. Фактически, mvc позволит вам вызвать любой открытый метод. Однако вы всегда должны использовать наиболее явный тип возвращаемого типа, который вы хотите, как и любой другой метод (например, JsonResult).

17
ответ дан 29 November 2019 в 03:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: