【问题标题】:Why does an empty 200 create a fail in jQuery?为什么空的 200 会在 jQuery 中创建失败?
【发布时间】:2026-02-05 01:35:01
【问题描述】:

我创建了一个简单的 ajax 请求来将一些 json 发布到我的 api。我之前在其他页面中做过几次,但突然我无法让这个新调用正常工作。

var request = $.ajax({
    type: "POST",
    url: "/my-api-call",
    dataType: "json",
    data: JSON.stringify({"pid": 5, "comment": $('#comment').val()})
});
request.done(function(data){
    console.log('weve got a succesful response!!');
})
request.fail(function(error){
    console.log('weve got an error!!!');
    console.log(error);
});

该调用仅返回一个空的 200 响应,我在浏览器中进行了验证。但不知何故,浏览器控制台总是说weve got an error!!!。正如你所看到的,我也记录了错误,但我是一个充满信息的对象,我不知道其中有什么重要的。在那个错误对象中,它还说响应是普通的 200 btw。

看到这段代码相当简单,我实在想不通我做错了什么。

有人知道我在这里做错了什么吗?欢迎所有提示!

【问题讨论】:

  • 您确定这不是 CORS 问题吗? (请求删除域
  • 您在查看浏览器的网络响应信息时得到的完整响应是什么?
  • 控制台中的错误信息是什么意思?我相信它会告诉你问题所在。
  • 我看不懂这个。请,如果只是为了在本网站上发帖,请不要写weve

标签: javascript jquery json post


【解决方案1】:

这是因为您已将 dataType 设置为 json。因此 jquery 正在尝试将您的数据(为空)解析为 json。空结果不是有效的 json。

"json":将响应评估为 JSON 并返回 JavaScript 目的。 JSON数据被严格解析;任何格式错误的 JSON 被拒绝并引发解析错误。 从 jQuery 1.9 开始,一个空的 响应也被拒绝;服务器应返回 null 的响应 或 {}。 (有关正确 JSON 的更多信息,请参阅 json.org 格式。)

From the docs

所以你应该返回{}null

【讨论】:

  • 啊!我一直认为 dataType 指的是正在发送的数据。我刚刚删除了它,现在它就像一个魅力。谢谢一百万!
  • 不,dataType 是共振类型:String The type of data that you're expecting back from the server。另外,没问题:)
最近更新 更多