Я использую ASP.NET WebApi для создания моих служб REST. Во многих случаях мне нужно только вернуть сообщение 200 OK (без тела). Реакция обычно выглядит следующим образом (это POST):jQuery 2.0 + ASP.NET WebApi POST пустой ответ = сбой
return this.Request.CreateResponse(HttpStatusCode.OK);
или
return new HttpResponseMessage(HttpStatusCode.OK);
Оба работали хорошо в JQuery 1.8, но это потому, что эта версия позволила responseText из «», которые будут использоваться (что это затем пытается запустить parseJSON).
Однако в JQuery 2.0, он заканчивает в deferred.fail() обратного вызова вместо этого, так как считает, что не удалось parseJSON (на пустой текст) является недействительным ..
Как решить эту проблему?
UPDATE
Пример JS вызова, который использует это:
var deferred = $.ajax({
"type": "POST",
"url": something,
"contentType": "application/json; charset=utf-8",
"dataType": "json",
"data": JSON.stringify(whatever)
});
deferred.fail(function (msg) {
// it ends up in here
});
Вызов может привести ответ JSON, но часто это просто необходимо вернуть 200 OK без тела, поэтому Я все еще указываю dataType/contentType (нет способа узнать заранее, если у него будет тело или нет, у сервера есть логика, чтобы решить это).
Вы можете добавить пример вашего $ .ajax вызова? –
Хорошо, я добавил пример вызова JS ajax – automaton