2013-11-03 171 views
0

我正在用javascript/html5构建游戏,并且试图在可以从整个游戏中加载并覆盖的迷宫中构建一个锁定门的数据库。我在网上发现了大量的教程,但没有任何工作。我想知道是否有人可以看看我在做什么,并让我知道我做错了什么。使用Javascript/jQuery阅读JSON

我的JSON文件看起来像这样:

{ 
"doors": [ 
    {"left":true, "right":false, "bottom":false}, 
    {"left":false, "right":false, "bottom":false}, 
    {"right":false, "bottom":false, "top":false}, 
    {"left":false, "right":false, "top":false} 
    ] 
} 

我想建立的HTML页面,这样,当一个球员则检查其锁定或不喜欢一门碰撞:

if (player.x < leftDoor.x + leftDoor.width && 
player.x + player.width > leftDoor.x && 
player.y < leftDoor.y + leftDoor.height && 
player.y + player.height > leftDoor.y) 
{ 
    if(doors[0].left == true) 
     alert("door is locked"); 
    else 
     window.location = ("2.html?p1="); 
} 

不过,我无法从JSON文件本身读取。我已经试过了诸如:

function loadJson() { 
    $(document).ready(function() 
    { 
     $.getJSON('info.json', function(doors) { 
     alert(doors[0].left); 
     }); 
    }); 
} 

但什么也没有发生,我需要能够访问信息的HTML也是如此。我宁愿使用jQuery,但我不反对直接JS如果它的工作。我一直试图做这个很长的一段时间,我绝对没有在哪里。如果有人能够帮助,那将是惊人的。谢谢!

+1

开始的一个地方是'console.log(doors)'来查看'$ .getJSON'实际返回的结果。 – Evan

+0

检查浏览器控制台网络选项卡中的请求...是否正在制作?如果是这样,什么是状态码?它是否从服务器返回json?开始隔离问题的最佳位置 – charlietfl

+0

控制台给我的错误说:是info.json中的一个意外标记,而$未定义。 – Josephine

回答

1

也许你应该使用传统的函数jQuery.ajax并将响应解析为json。我总是发现它更容易调试。

jQuery.ajax({ 
    url:'info.json', 
    dataType:'json' 
}).done(function(response) { 
    console.log(response.doors); 
}); 

请注意,响应的第一个元素不是response [0],而是response.doors。

此外...我没有得到数据结构。你怎么在几个职位上有一个“左”键?

+0

每条线都是迷宫中的一个房间,多个房间有一个左门。 – Josephine

1
$.get('info.json',{},function(data){ 

    console.log(data.doors); 
}); 

就是这样。

+0

当我把网站放到网上后,我在控制台中得到了正确的输出。我现在如何使用这些信息来测试门是否被锁定在代码中? – Josephine