jQuery 2.0 + ASP.NET WebApi POST空响应=失败

时间:2013-05-21 19:02:41

标签: jquery rest asp.net-web-api

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

1 个答案:

答案 0 :(得分:4)

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

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

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

参见文档:

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