Ajax ASP.net Ответ о состоянии MVC

#jquery #ajax #asp.net-mvc

#jquery #ajax #asp.net-mvc

Вопрос:

Я пытаюсь вернуть код состояния на свою веб-страницу. Но я получаю обратно 200, а не 201, который возвращает мой контроллер, что означает, что мое предупреждение не отображается.

Есть идеи, что я делаю не так?

 $.ajax({
                url: "/Home/Request/",
                type: 'POST',
                data: { model: JSON.stringify(model) },
                cache: false,
                crossDomain: true,
                async: false,
                dataType: 'json',
                statusCode: {
                    201: function(data) {
                        alert(data);
                    },
                    501: function(data) {
                        alert('Opps an error occurred.');
                    }
                },
                error: function(event) {
                    alert('Error'   event);
                }
            });
  

//Контроллер

    [HttpPost]
    public async Task<JsonResult> Request(string model)
    {
    //Do Stuff
      return Json((int)response.StatusCode, JsonRequestBehavior.AllowGet); <-- response.StatusCode = 201
    }
  

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

1. return Json((int)response.StatusCode... собирается возвращать код состояния в качестве тела ответа, а не устанавливать HTTP-статус ответа на запрос.

Ответ №1:

вам нужно отправить код состояния с контроллера следующим образом. я отправляю HttpStatusCode.Хорошо, это означает 200

 Response.StatusCode = (int)HttpStatusCode.OK;

return Json((int)Response.StatusCode, JsonRequestBehavior.AllowGet);
  

в вызове ajax

  statusCode: {
            200: function (data) { 
                  alert('200');
            }, 
           501: function (data) { 
                  alert('Opps an error occurred.'); 
           }
  },
  

Ответ №2:

JsonResult не имеет свойства или способа прямой настройки HttpStatus. Вы должны установить код состояния отдельно —

 Response.StatusCode = (int)response.StatusCode
  

Ответ №3:

         $.ajax({
                        url: "/Home/Request/",
                        type: 'POST',
                        data: { model: JSON.stringify(model) },
                        cache: false,
                        crossDomain: true,
                        async: false,
                        dataType: 'json',
                        sucess: function(data) {
    alert(data);
}
    ,
                        error: function(event) {
                            alert('Error'   event);
                        }
                    });
  

статус — это данные, которые возвращаются из json