我无法用javascript从firebase中获取数据

我无法用javascript从firebase中获取数据,javascript,json,firebase,Javascript,Json,Firebase,我正在尝试从firebase中获取数据,以便在JS编程的游戏中使用。问题是我永远无法得到数据。这是我在编辑器中添加的JSON: {xcord:23,ycord:3543} 这是我用来尝试获取数据的JS代码: fb.on('child_added', function(snapshot) { obj = snapshot.val(); alert(obj.xcord); c1.x = obj.xcord; c1.y = obj.ycord;

我正在尝试从firebase中获取数据,以便在JS编程的游戏中使用。问题是我永远无法得到数据。这是我在编辑器中添加的JSON:

{xcord:23,ycord:3543}

这是我用来尝试获取数据的JS代码:

fb.on('child_added', function(snapshot) {
    obj = snapshot.val();
    alert(obj.xcord);
        c1.x = obj.xcord;
        c1.y = obj.ycord;
        stage.update();
});

当警报弹出时,我得到的只是“取消查找”。有人知道出了什么问题吗?

你的代码看起来不错。因为你的警报“未定义”会让我相信还有其他错误。firebase的路径正确吗?

您的代码看起来不错。因为你的警报“未定义”会让我相信还有其他错误。firebase的路径正确吗?

当I console.log将数据记录在jsbin中时,它显示为:

{sfws: "{xcord: 23, ycord: 3543}", update: "{xcord:'3435'}", update2: "{xcord: 23, ycord: 3543}"}
注意到坐标周围的双引号了吗?这意味着它们是字符串,而不是JSON对象

我想你应该用这样的东西来储存它们:

var coords = document.getElementById('editor').value; // read the text from the input
ref.set(coords);
从输入中读取的任何值都将是字符串,即使在人眼看来它非常接近JavaScript对象

您需要将值从字符串转换为JavaScript对象,这可以通过JSON.parse轻松完成。这要求您以正确的JSON形式输入对象,这意味着您需要双引号引用属性名称:

'{"xcord": 23, "ycord": 3543}'
然后,您可以在将值发送到Firebase之前将此JSON解析回对象:

var text = document.getElementById('editor').value; // read the text from the input
var coords = JSON.parse(text);
ref.set(coords);
fb.on('child_added', function(snapshot) {
    var text = snapshot.val();
    var obj = JSON.parse(text);
    alert(obj.xcord);
    c1.x = obj.xcord;
    c1.y = obj.ycord;
    stage.update();
})
或者从Firebase检索字符串时:

var text = document.getElementById('editor').value; // read the text from the input
var coords = JSON.parse(text);
ref.set(coords);
fb.on('child_added', function(snapshot) {
    var text = snapshot.val();
    var obj = JSON.parse(text);
    alert(obj.xcord);
    c1.x = obj.xcord;
    c1.y = obj.ycord;
    stage.update();
})
不推荐快速修复 如果您不愿意将数据转换成正确的JSON,您还可以使用eval将其恢复到正常状态。我强烈建议不要这样做,因为eval不仅对报价不那么挑剔;它还允许将代码片段注入到页面中。但如果您想忽略该建议,这是一个快速解决方案:

fb.on('child_added', function(snapshot) {
    var text = snapshot.val();
    eval("obj = "+text);
    alert(obj.xcord);
    c1.x = obj.xcord;
    c1.y = obj.ycord;
    stage.update();
})
当I console.log将数据记录到jsbin中时,它显示为:

{sfws: "{xcord: 23, ycord: 3543}", update: "{xcord:'3435'}", update2: "{xcord: 23, ycord: 3543}"}
注意到坐标周围的双引号了吗?这意味着它们是字符串,而不是JSON对象

我想你应该用这样的东西来储存它们:

var coords = document.getElementById('editor').value; // read the text from the input
ref.set(coords);
从输入中读取的任何值都将是字符串,即使在人眼看来它非常接近JavaScript对象

您需要将值从字符串转换为JavaScript对象,这可以通过JSON.parse轻松完成。这要求您以正确的JSON形式输入对象,这意味着您需要双引号引用属性名称:

'{"xcord": 23, "ycord": 3543}'
然后,您可以在将值发送到Firebase之前将此JSON解析回对象:

var text = document.getElementById('editor').value; // read the text from the input
var coords = JSON.parse(text);
ref.set(coords);
fb.on('child_added', function(snapshot) {
    var text = snapshot.val();
    var obj = JSON.parse(text);
    alert(obj.xcord);
    c1.x = obj.xcord;
    c1.y = obj.ycord;
    stage.update();
})
或者从Firebase检索字符串时:

var text = document.getElementById('editor').value; // read the text from the input
var coords = JSON.parse(text);
ref.set(coords);
fb.on('child_added', function(snapshot) {
    var text = snapshot.val();
    var obj = JSON.parse(text);
    alert(obj.xcord);
    c1.x = obj.xcord;
    c1.y = obj.ycord;
    stage.update();
})
不推荐快速修复 如果您不愿意将数据转换成正确的JSON,您还可以使用eval将其恢复到正常状态。我强烈建议不要这样做,因为eval不仅对报价不那么挑剔;它还允许将代码片段注入到页面中。但如果您想忽略该建议,这是一个快速解决方案:

fb.on('child_added', function(snapshot) {
    var text = snapshot.val();
    eval("obj = "+text);
    alert(obj.xcord);
    c1.x = obj.xcord;
    c1.y = obj.ycord;
    stage.update();
})

是的,我相信,我的URL大致如下:我编辑时也会发出警报,所以我认为URL是正确的是,我相信,我的URL大致如下:我编辑时也会发出警报,所以我认为URL是正确的,因为Terry还说您共享的代码片段看起来不错,我们需要更多信息。如果您在jsfiddle/plunkr/jsbin.ok中设置问题的小复制,这可能是最快的。我会这样做的,我有点好,所以我在jsbin上做了尺寸安装,现在我得到了一个输出,但我不能从json中提取一个值!但是,我现在可以提醒整个JSON字符串。这里可以找到输出:代码如下:var fb=newfirebase;fb.on'child_added',functionsnapshot{var json=snapshot.val;alertjson;};请编辑您的问题,并将链接添加到jsbin和代码。评论不是一个好地方。因为Terry也说你分享的代码片段看起来不错,我们需要更多的信息。如果您在jsfiddle/plunkr/jsbin.ok中设置问题的小复制,这可能是最快的。我会这样做的,我有点好,所以我在jsbin上做了尺寸安装,现在我得到了一个输出,但我不能从json中提取一个值!但是,我现在可以提醒整个JSON字符串。这里可以找到输出:代码如下:var fb=newfirebase;fb.on'child_added',functionsnapshot{var json=snapshot.val;alertjson;};请编辑您的问题,并将链接添加到jsbin和代码。注释不是一个很好的地方,所以我尝试了代码片段,它会在检索字符串时将字符串转换为一个值,但我得到了错误。更糟糕的是他们没有给我任何有用的信息。这是来自jsbin控制台的错误:错误脚本错误。第0行错误脚本错误。第0行错误脚本错误。行啊对了。。。这是因为字符串不是有效的JSON。在JSON中,属性名封装在双引号中:{xcord:23,ycord:3543}。我会更新答案的。非常感谢您的帮助和帮助
对我粗暴地对待这个问题!我知道这是一个肮脏的修复,但由于这是我试图为自己做的事情,我并不太担心它,但我稍后会将其更改为正确的JSON读取函数,因为我只是尝试用值编辑器测试它,它似乎会这样更改它。我查看了你的精彩回复/惊人答案!再次感谢!因此,我尝试了代码片段,它将在检索字符串时将字符串转换为值,但我得到了错误。更糟糕的是他们没有给我任何有用的信息。这是来自jsbin控制台的错误:错误脚本错误。第0行错误脚本错误。第0行错误脚本错误。行啊对了。。。这是因为字符串不是有效的JSON。在JSON中,属性名封装在双引号中:{xcord:23,ycord:3543}。我会更新答案的。哦,非常感谢你的帮助,和我一起解决这个问题!我知道这是一个肮脏的修复,但由于这是我试图为自己做的事情,我并不太担心它,但我稍后会将其更改为正确的JSON读取函数,因为我只是尝试用值编辑器测试它,它似乎会这样更改它。我查看了你的精彩回复/惊人答案!再次感谢!