正确解析JSON

时间:2016-03-09 22:02:39

标签: javascript html jsonp

首先,请原谅我,如果这些代码中的任何一个是坏的,低效的或完全错误的,我以前根本没有使用JSON,或者任何类型的API工作。

所以,我只是想创建一个基本网页,它将显示通过JSONP获得的JSON中的一些信息(我是否正确实现了它??)。我认为我正在正确访问id元素,但似乎并没有因为我尝试使用alert,console.log以及设置段落的内部html来显示它。这是代码:

HTML                   

    </head>

    <body>
        <p id="main">
            test
        </p>                                                                                                                                                          
    </body>
    <script src="js/parseJSON.js"></script>
    <script type="application/json" src="https://www.aviationweather.gov/gis/scripts/MetarJSON.php?taf=true&bbox=-86,41,-82,45&callback=parseJSON"></script>
</html>

的Javascript

var parseJSON =  function(json) {
    var obj = JSON.parse(json);

    console.log(obj.features[0].properties.id); 
}

这似乎很简单,我只是搞砸了。任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:3)

  

我只是想创建一个基本网页,它将显示通过JSONP获得的JSON中的一些信息(我是否正确实现了它??)。

你说type="application/json"所以浏览器会忽略它,因为它不知道如何执行用JSON编写的脚本。

JSONP不是JSON,而是JavaScript,因此正确的内容类型为application/javascript

进一步https://www.aviationweather.gov/gis/scripts/MetarJSON.php?taf=true&bbox=-86,41,-82,45&callback=parseJSON返回JSON而不是JSONP。

var parseJSON =  function(json) {
    var obj = JSON.parse(json);

虽然JSONP服务可以以包含JSON的JavaScript字符串的形式提供数据,但这绝不是我见过的。不应将参数解析为JSON。它应该是一个常规的JavaScript数据结构。

...但首先你需要服务来返回JSONP。