【发布时间】:2016-08-12 20:48:01
【问题描述】:
我正在使用firebase的实时数据库并尝试在for循环中发送一个put请求,我的代码如下:
var httpput = function(articleIdlol, versionnumber){
$http({
method: "PUT",
url: FirebaseUrl +articleIdlol+ "/versions/" +versionnumber+"/moment.json",
data: document.getElementById("changeMoment").value
});
}
$scope.changeMomentorSituation = function(articleId){
for (var x = 0; x < $scope.articlesData[articleId].versions.length; x++){
httpput(articleId, x);
}
}
$scope.articlesData 包含从较早的 http get 请求到 firebase 数据库的 response.data。 articleId 是a2,我查过了。
我可以向您保证,数据库的链接是正确的。但是,当我运行代码时,我收到 400(错误请求)错误,这可能意味着我发送的数据格式不正确。
我相信我正在发送一个字符串,但为了确保我先将数据转换为一个字符串并发送它,但我得到了同样的错误。 'moment' 是一个对象中的一个键,它包含在一个名为 'versions' 的数组中。
这是 JSON 架构:
"EditedArticles" : {
"a2" : {
"versions" : [ {
"answer" : "a2",
"article_code" : "a2",
"created_time" : "2016-08-12T01:20:14.300Z",
"datatype" : "article",
"hashtags" : [ "a2", "a2", "a2" ],
"keyword" : "a2",
"moment" : "a2",
"question" : "a2",
"seo" : {
"description" : "a2",
"og_title" : "a2",
"title" : "a2"
},
"situation" : "a2",
"title" : "a2",
"version" : 1
}
}
我尝试发送 {moment: "xxx"} 但这在 moment(original) 中嵌套了另一个关键时刻,值为 "xxx"。这意味着,我可以使用较早的数据并在新对象中重新创建每个字段,并将其发送到 http put 请求中的数据字段中:
FirebaseUrl +articleIdlol+ "/versions/" +versionnumber.json
但是假设我的 URL 路径正确,我是否应该能够发送单个字符串来修改关键时刻的值?
【问题讨论】:
-
“错误可能意味着我发送的数据格式不正确”在控制台->网络选项卡中检查它
-
"无效数据;无法解析 JSON 对象、数组或值。您的键名中可能使用了无效字符。"就是我所看到的。但我检查了我发送的数据类型,它是一个字符串
标签: javascript json http firebase-realtime-database put