尝试向Firebase RESTful API发出POST或PUT请求时遇到问题... 为了提出请求,我使用的是Valve的全局JavaScript,执行由Google V8引擎处理。
GET请求(没有问题)看起来像这样:
$.AsyncWebRequest("https://<project>.firebaseio.com/-KrFV19WfaC7tfY6qys6.json",
{
type: "GET",
complete: function (data){
$.Msg("WOW: " + JSON.stringify(data));
},
error: function (err){
$.Msg("Error: " + JSON.stringify(err));
},
});
我收到回复:
WOW: {"statusText":"success","responseText":"{\"a\":\"1\"}\u0000","status":200}
但是当我尝试执行PUT或POST请求时,代码如下所示:
$.AsyncWebRequest("https://<project>.firebaseio.com/game.json",
{
type: "POST",
data: {"A":"B"},
success: function (data){
$.Msg("WOW: " + JSON.stringify(data));
},
error: function (err){
$.Msg("Error: " + JSON.stringify(err));
},
});
我得到了下一个回复:
Error: {"statusText":"error",
"responseText":"{\n \"error\" : \"Invalid data; couldn't parse JSON object, array, or value.\"\n}\n\u0000",
"status":400}
有人可以帮我理解可能出现的问题吗?
答案 0 :(得分:0)
<强>更新强>
您必须将对象包装在payload
属性中:
data: {payload: JSON.stringify({ "A": "B" })},
是否必须尝试在请求数据对象周围使用JSON.stringify()
?
像:
$.AsyncWebRequest("https://<project>.firebaseio.com/game.json",
{
type: "POST",
data: JSON.stringify({"A":"B"}),
success: function (data){
$.Msg("WOW: " + JSON.stringify(data));
},
error: function (err){
$.Msg("Error: " + JSON.stringify(err));
},
});
此外,AsyncWebRequest
中是否有contentType属性?
所以也许你必须添加
contentType: "application/json; charset=utf-8",
到请求对象(例如type
属性之后)。