为什么一个空的200在jQuery中创建一个失败?

时间:2015-03-23 16:45:21

标签: javascript jquery json post

我创建了一个简单的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。

看到这段代码相当简单,我无法弄清楚我做错了什么。

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

1 个答案:

答案 0 :(得分:4)

这是因为您已将dataType设置为json。所以jquery试图将你的数据(空的)解析为json。空结果无效json。

  

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

From the docs

因此您应该返回{}null