在访问从MongoDB文档返回JSON的请求时,我看到一个奇怪的解析器错误(parsererror)。
本文档返回一个神秘的parsererror:
{"data":{"first_name":"Ray","last_name":"Reinger","_id":4e9c0ed27763dfba37000001}}
本文档不会返回错误:
{"data":{"first_name":"Ray","last_name":"Reinger"}}
使用的jquery是:
$("#fetch").click(function(){
var url = "http://localhost:3333/people/4e9c0ed27763dfba37000001";
$.ajax({
url: url,
method: 'GET',
success: function(data, status){
//do a thing with the data
},
complete:function(jqXHR, status) {
console.log(status) //displays 'parsererror'
}
});
return false;
});
请求本身没问题。 返回的mime-type是'application / json'。 引用所有字段和值。 只要我能理解,_id就是有效的JSON。
基本上打开和关闭_id会使事情发挥作用。
答案 0 :(得分:0)
在写上述问题时,我看到了问题所在。在这里为后代和其他可能遇到同样问题的人发布答案。
核心问题是没有引用ID值。
我覆盖了ID的默认ruby-mongo-driver渲染(使用嵌套哈希),并且作为副作用,没有引用id字符串:
class BSON::ObjectId
def as_json(options ={})
to_s
end
def to_json(*a)
to_s.to_json
end
end
请注意使用* to_s。 to_json * ,这会将ObjectId正确引用为JSON字符串。