Firebase REST API POST请求失败,并显示错误:“数据无效; 无法解析JSON对象,数组或值…“

我正在尝试使用Firebase REST API将内容保存到我的数据存储中。 我试过jQuery和vanilla 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。 我试图在Httpie中检查-v选项以获取详细信息。 我把所有标题都放在Httpie那里。 什么都没有帮助。 顺便说一句,我的环境是可写的,所以不应该有任何权限问题。

知道怎么做到这一点?

谢谢。

您已通过分配contentType属性指定了您的AJAX请求包含json字符串。 但是,附加到请求的参数不是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"})