MongoDB _id字段上的Jquery ajax解析器错误

时间:2011-10-25 00:03:42

标签: jquery ajax json mongodb

在访问从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会使事情发挥作用。

1 个答案:

答案 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字符串。