我正在使用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的原因(事先没有办法知道它是否有一个正文或不,服务器有逻辑来决定)。
答案 0 :(得分:4)
您的dataType
设置为JSON
,这意味着您希望从服务器获取JSON。
您可以尝试将其更改为text
以查看是否可以解决问题。
或者如果它并不总是空的,请尝试将其完全删除,因为理论上jQuery应该能够识别格式。
参见文档: