Ошибка парсера Jquery ajax в поле MongoDB _id - PullRequest
0 голосов
/ 25 октября 2011

Я вижу странную ошибку синтаксического анализатора (parsererror) при доступе к запросу, возвращающему JSON из документа MongoDB.

Этот документ возвращает загадочное 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-тип 'application / json'.Все поля и значения указаны в кавычках.Насколько я могу сказать, _id действителен в формате JSON.

По сути, включение и выключение _id заставляет все работать.

1 Ответ

0 голосов
/ 25 октября 2011

При написании вышеуказанного вопроса я увидел проблему. Размещение ответа здесь для потомков и для всех, кто может столкнуться с той же проблемой.

Основная проблема заключается в том, что значение идентификатора не заключалось в кавычки.

Я переоценивал стандартную визуализацию идентификатора 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...