#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