2012-02-12 44 views
2

我需要使用JQuery访问一些JSON。出于某种原因,它无法正常工作,并且由于getJSON方法无法正常工作,我无法弄清楚什么是错误的。我检查了JSON网址是否正确。谢谢!使用JQuery访问JSON

HTML:

<html> 
<head> 
    <script src="//code.jquery.com/jquery-1.6.4.min.js"></script> 
<script type="text/javascript"> 
     $(document).ready(function(){ 
     $.getJSON('../src/json/baseball.json', function(data) { 
      $("#add").html(data.baseball[0].levels[0].games[0].versus); 
     }); 
     }); 
    </script> 
</head> 
<body> 
    <p id= "add"></p> 
</body> 
</html> 

JSON:

{"baseball": 
[{ 
    "gender":"boys", 
    "levels":[ 
    { 
     "level": "varsity", 
     "games":[ 
     { 
      "versus":"Fullerton", 
      "homeaway":"Home", 
      "month":"February", 
      "date":"27", 
      "year":"2012", 
      "troyscore":"32", 
      "vsscore":"41", 
     }, 
     { 
      "versus":"Sunny Hills", 
      "homeaway":"Away", 
      "month":"March", 
      "date":"28", 
      "year":"2012", 
      "troyscore":"20", 
      "vsscore":"17", 
     }] 
    }, 
    { 
     "level": "jv", 
     "games":[ 
     { 
      "versus":"Sonora", 
      "homeaway":"Home", 
      "month":"January", 
      "date":"20", 
      "year":"2012", 
      "troyscore":"15", 
      "vsscore":"21", 
     }, 
     { 
      "versus":"Valencia", 
      "homeaway":"Away", 
      "month":"April", 
      "date":"30", 
      "year":"2012", 
      "troyscore":"40", 
      "vsscore":"1", 
     }] 
    }] 
}, 
{ 
    "gender":"girls", 
    "levels":[ 
    { 
     "level": "varsity", 
     "games":[ 
     { 
      "versus":"Acacia", 
      "homeaway":"Home", 
      "month":"February", 
      "date":"27", 
      "year":"2012", 
      "troyscore":"32", 
      "vsscore":"41", 
     }, 
     { 
      "versus":"LV", 
      "homeaway":"Away", 
      "month":"March", 
      "date":"28", 
      "year":"2012", 
      "troyscore":"20", 
      "vsscore":"17", 
     }] 
    }, 
    { 
     "level": "jv", 
     "games":[ 
     { 
      "versus":"Commonwealth", 
      "homeaway":"Home", 
      "month":"January", 
      "date":"20", 
      "year":"2012", 
      "troyscore":"15", 
      "vsscore":"21", 
     }, 
     { 
      "versus":"Xishan", 
      "homeaway":"Away", 
      "month":"April", 
      "date":"30", 
      "year":"2012", 
      "troyscore":"40", 
      "vsscore":"1", 
     }] 
    }] 
}] 
} 
+0

尽管URLs很像文件系统路径,但AFAIK并不是必需的 - 而且服务器可能不知道(或者出于安全原因,可能会主动忘记)“..”表示“父目录”。你有没有尝试一个绝对的网址? – cHao 2012-02-12 23:44:14

+0

如果你在'$(“#add”)...'前面加上'console.log(data)',你会在控制台中看到什么? – fncomp 2012-02-12 23:48:09

回答

3

您的每个内的对象的最终性质都尾随逗号,使你的JSON格式错误。试试将它粘贴到jsonlint.com。它会在每一个物体的最后物业上酿酒。

{ 
     "versus":"Fullerton", 
     "homeaway":"Home", 
     "month":"February", 
     "date":"27", 
     "year":"2012", 
     "troyscore":"32", 
     "vsscore":"41", <-- borked JSON 
    }, 

投诉:如果不严格合式返回的JSON

Parse error on line 67: 
...     },     
-----------------------^ 
Expecting 'STRING' 

$.getJSON将静默失败。我想从文档中提供一个参考,但看起来jQuery网站已经关闭了.... bleh。

+0

这将仍然在非IE浏览器中工作,它不能成为不工作的原因。 – ShankarSangoli 2012-02-12 23:48:52

+0

这不一定是关于浏览器,而是关于只接受格式良好的JSON的jQuery。 – karim79 2012-02-12 23:51:54

+0

@ShankarSangoli:这是JSON,而不是JavaScript。他们是不同的规格,不同的规则。 http://jsfiddle.net/5n8Qz/ – 2012-02-12 23:52:42