2014-05-05 100 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值。 –