麻烦让json回来

时间:2014-05-05 07:40:50

标签: javascript json jsonp

我正在使用当前的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 个答案:

答案 0 :(得分:1)

假设您显示的第一个代码位于文件中(错误地)名为"gameData.json",那么您尝试解析的不是JSON(或JSONP),而是纯JavaScript。

所以不要解析它。

更改

var obj = $.parseJSON(jsonp);

var obj = jsonp;

注意:

  • JSON是基于文本的数据交换格式。您的困惑可能来自许多年轻的开发人员使用非敏感表达式,如“JSON对象”......
  • 您应该避免将jsonp命名为包含普通JavaScript对象的变量。

如果您更喜欢加载JSON文件而不是执行JavaScript文件,那么

  1. 删除"jsonp =部分以使其成为真正的JSON文件
  2. 删除script元素(因为它不再是JavaScript)
  3. 使用ajax加载JSON文件
  4. 以下是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
          });
       });
    });