2014-05-05 114 views
0

我使用的這個當前的JSON結構:麻煩回JSON

jsonp = {"game":[ 
       {"id":"1","gameImage":"qqq.jpg"} 
       ], 
     "game":[ 
       {"id":"2","gameImage":"hhh.jpg"} 
       ] 
     } 

我想只是拿回所有的gameImage值。我嘗試了以下,但它不會工作。有任何想法嗎?

<html> 
    <head></head> 
<body> 

    <script type="text/javascript" language="javascript" src="jquery-1.8.2.min.js"></script> 
    <script type="text/javascript" language="javascript" src="gameData.json"></script> 
    <script> 
    $(document).ready(function() { 


    var obj = $.parseJSON(jsonp); 
     $.each(obj, function() { 
      alert(this['gameImage']); 
     }); 

}); 
     </script> 



    </body> 
    </html> 

回答

1

假設您展示的第一個代碼名爲"gameData.json"文件(錯誤地)中,你要分析什麼是不JSON(或JSONP),這是顯而易見的JavaScript。

所以不要解析它。

變化

var obj = $.parseJSON(jsonp); 

var obj = jsonp; 

注:

  • JSON是一個基於文本的數據交換格式。您的困惑可能來自許多年輕開發人員使用諸如「JSON對象」等非感性表達式...
  • 您應該避免命名jsonp一個包含普通JavaScript對象的變量。

如果你願意來加載,而不是執行JavaScript文件,然後一個JSON文件

  1. 刪除"jsonp =部分,使之成爲真正的JSON文件
  2. 刪除script元素(因爲它不再是JavaScript)
  3. 使用ajax加載JSON文件

這裏的JavaScript的怎麼會是這樣的:

$(document).ready(function() { 
    $.getJSON("gameData.json", function(obj){ 
     $.each(obj, function() { 
      alert(this['gameImage']); 
     }); 
    }); 
}); 

,或者,如果你能負擔得起不支持IE8:

$(document).ready(function() { 
    $.getJSON("gameData.json", function(arr){ 
     arr.forEach(function(item){ 
      console.log(item.gameImage); // yes, prefer the console over alert 
     }); 
    }); 
}); 
+0

我明白了。我想解析一個真正的json文件,所以我應該從json文件中刪除「jsonp =」? –

+0

如果你想讓它成爲一個json文件,是的,你必須刪除該部分。但是,你不能將它加載到腳本元素中,而是使用ajax函數。你是否想讓我的答案能夠解釋如何做到這一點? –

+0

好的,我已經刪除了。我還應該採取行動嗎?我想回來的是每個遊戲塊,取回gameImage值。 –