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

时间:2015-06-12 10:33:38

标签: jquery ajax firebase

我正在尝试使用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身上。什么都没有帮助。 顺便说一句,我的环境是可写的,所以不应该有任何权限问题。

知道如何实现这个目标吗?

感谢。

3 个答案:

答案 0 :(得分:9)

您已通过分配js-ctypes属性指定您的AJAX请求包含json字符串。但是,附加到请求的参数不是JSON字符串。为了将数据作为json字符串,只需调用contentType方法。

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

JSON.stringify(params)

干杯。

答案 1 :(得分:2)

您的数据必须是字符串,使用JSON.stringify将对象转换为字符串:

data: JSON.stringify({"name": "John", "date": "2pm"})

答案 2 :(得分:0)

如果您想将值存储为JSON而不是字符串,请检查密钥。如错误消息所述:“也许您在密钥名称中使用了无效字符。”键中不允许使用(/。\,)之类的字符。