我创建了一个简单的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。
看到这段代码相当简单,我无法弄清楚我做错了什么。
有人知道我在这里做错了什么吗?欢迎所有提示!
答案 0 :(得分:4)
这是因为您已将dataType
设置为json
。所以jquery试图将你的数据(空的)解析为json。空结果无效json。
" json":将响应评估为JSON并返回JavaScript 宾语。 JSON数据以严格的方式解析;任何格式错误的JSON 被拒绝并抛出一个解析错误。 从jQuery 1.9开始,空了 回复也被拒绝;服务器应返回null响应 或{}代替。 (有关正确JSON的更多信息,请参阅json.org 格式化。)
因此您应该返回{}
或null