我正在使用 ASP.NET WebApi 来构建我的 REST 服务。在很多情况下,我只需要返回一个 200 OK 消息(没有正文)。响应通常看起来像(它是一个 POST):
return this.Request.CreateResponse(HttpStatusCode.OK);
或者
return new HttpResponseMessage(HttpStatusCode.OK);
两者都在 jQuery 1.8 中运行良好,但那是因为该版本允许使用 "" 的 responseText(然后它会尝试在其上运行 parseJSON)。
然而,在 jQuery 2.0 中,它以 deferred.fail() 回调结束,因为它认为失败的 parseJSON(在空文本上)是无效的。
我该如何解决这个问题?
更新
使用这个的示例 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(没有办法事先知道它是否有正文,服务器有逻辑来决定)。