Запрос Firebase REST API POST завершается ошибкой: "недопустимые данные; не удалось проанализировать объект, массив или значение JSON…"
Я пытаюсь использовать Firebase REST API для сохранения материалов в моем хранилище данных. Я пробовал с jQuery и ванилью JS XHR. Однако оба дают одну и ту же ошибку. 403 плохая просьба и такой ответ:
недопустимые данные; не удалось проанализировать объект, массив или значение JSON. Возможно, вы используете недопустимые символы в именах.
вот мой пример JSON, я пытаюсь сохранить:
{
"date": "2pm",
"name": "John"
}
вот пример ajax запрос:
jQuery.ajax({
accept: "application/json",
type: 'POST',
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "https://something.firebaseio.com/endpointnode.json",
data: {
"name": "John",
"date": "2pm"
},
});
ответ на запрос:
{
"error" : "Invalid data; couldn't parse JSON object, array, or value. Perhaps you're using invalid characters in your key names."
}
как вы можете видеть, нет никаких специальных символов или что-то еще. Это должно сработать.
он отлично работает с CURL и Httpie. Я пытался проверить -v
опция в Httpie для деталей. Я помещаю все заголовки, как Httpie. Ничто не помогало.
Кстати, моя среда доступна для записи, поэтому не должно быть никаких проблем с разрешением.
есть идеи, как этого достичь?
спасибо.
2 ответов
указано, что AJAX
запрос содержит json
строку путем присвоения contentType
собственность. Однако, разгона добавленные в запрос строку JSON. Чтобы сделать данные строкой json, просто вызовите JSON.stringify(params)
метод.
следующий фрагмент кода может помочь вам решить проблему.
var data = {"name": "John", "date": "2pm"};
jQuery.ajax({
accept: "application/json",
type: 'POST',
contentType: "application/json; charset=utf-8",
dataType: "json",
url: "https://something.firebaseio.com/endpointnode.json",
data: JSON.stringify(data),
});
Ура.
ваши данные должны быть строкой, используйте JSON.stringify для преобразования объекта в строку:
data: JSON.stringify({"name": "John", "date": "2pm"})