#jquery #ajax #json #mongodb
#jquery #ajax #json #mongodb
Вопрос:
Я вижу странную ошибку синтаксического анализатора (parsererror) при доступе к запросу, возвращающему JSON из документа MongoDB.
Этот документ возвращает загадочную ошибку синтаксического анализатора:
{"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:
При написании вышеупомянутого вопроса я увидел проблему. Публикуем ответ здесь для потомков и для всех, кто может столкнуться с той же проблемой.
Основная проблема заключается в том, что значение ID не было указано.
Я переопределял рендеринг идентификатора в ruby-mongo-driver по умолчанию (который использует вложенный хэш), и в качестве побочного эффекта строка идентификатора не была заключена в кавычки:
class BSON::ObjectId
def as_json(options ={})
to_s
end
def to_json(*a)
to_s.to_json
end
end
Обратите внимание на использование *to_s.to_json* это правильно заключает идентификатор объекта в кавычки как строку JSON.