小编典典

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

ajax

我正在尝试使用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一起正常工作。我尝试检查-vHttpie中的选项以了解详细信息。我像Httpie一样放置所有标头。没有任何帮助。顺便说一下,我的环境是可写的,因此不应有任何权限问题。

任何想法如何实现这一目标?

谢谢。


阅读 378

收藏
2020-07-26

共1个答案

小编典典

您已通过分配属性指定您的AJAX请求包含json字符串contentType。但是,附加到请求的参数不是JSON字符串。为了使数据成为json字符串,只需调用JSON.stringify(params)method。

以下代码段可以帮助您解决问题。

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),
});

干杯。

2020-07-26