2013-11-03 105 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