我是JavaScript新手。我的JavaScript(script.js)从JSON文件中读取,如下所示。该脚本在不使用JQuery的情况下读取。我关注THIS网站以供参考。
function readJSON() {
var LatLongData = JSON.parse(data);
var LatLng1 = new google.maps.LatLng(LatLongData[0]);
}
JSON文件(data.json),存储在与JavaScript相同的位置,如下所示:
{ "data":
[
{"latitude" : "40.10246648", "longitude" : "-83.14877599"}
]
}
html文件如下所示:
<script type="text/javascript" src="data.json"></script>
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=MyKey&sensor=true"></script>
<body onload="readJSON()">
<div id="map-canvas"/>
</body>
我在JSON文件格式上得到2个错误(在chrome和Firebug中都有)。但是,我在线验证(http://jsonlint.com/)JSON文件格式正确。我得到的错误是:
SyntaxError: missing ; before statement { "data":
ReferenceError: data is not defined ---> var LatLongData = JSON.parse(data);
我在这里做错了什么?
答案 0 :(得分:3)
你不能那样读json。首先,你不应该通过&lt; script&gt;来包含它。标签。你需要通过ajax请求获取json。我建议检查jQuery的getJSON方法:
$.getJSON( "data.json", function( data ) {
// now you can read the data
var LatLongData = data;
var LatLng1 = new google.maps.LatLng(LatLongData[0]);
});
您正在做的是将json包含为javascript文件。这就是你得到那个错误的原因。其次, readJSON 使用实际上从未定义的数据变量。
答案 1 :(得分:1)
你包括了这个Json
{ "data":
[
{"latitude" : "40.10246648", "longitude" : "-83.14877599"}
]
}
但代码期望变量称为数据, 如果你注意他们的“json”文件中的链接中的例子他们是“作弊”,那么它不是纯粹的JSON,因为它声明了一个包含字符串的全局变量。那个字符串是json。 因此,如果你继续这些练习,你应该有一个“json”文件。
带
var data = '[ {"latitude" : "40.10246648", "longitude" : "-83.14877599"}]'
但我建议你按照Krasimir的回答。