【问题标题】:jQuery 2.0 + ASP.NET WebApi POST empty response = failjQuery 2.0 + ASP.NET WebApi POST 空响应 = 失败
【发布时间】:2013-05-22 04:02:02
【问题描述】:

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

【问题讨论】:

  • 你能添加一个你的 $.ajax 调用的例子吗?
  • 好的,我添加了JS ajax调用示例

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


【解决方案1】:

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

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

或者如果它不总是空的,试着把它完全去掉,因为理论上 jQuery 应该能够识别格式。

查看文档:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 2021-09-09
    • 2013-05-03
    • 1970-01-01
    • 2021-03-24
    • 2014-07-02
    • 1970-01-01
    相关资源
    最近更新 更多