3

我正在使用 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(没有办法事先知道它是否有正文,服务器有逻辑来决定)。

4

1 回答 1

4

dataType设置为JSON这意味着您希望从服务器获取 JSON。

您可以尝试更改它text以查看是否可以解决问题。

或者,如果它并不总是空的,请尝试将其完全排除在外,因为理论上 jQuery 应该能够识别格式。

请参阅文档:

http://api.jquery.com/jQuery.ajax/

于 2013-05-21T19:43:20.947 回答