1

我是 JavaScript 新手。我的 JavaScript (script.js) 从 JSON 文件中读取,如下所示。该脚本在不使用 JQuery 的情况下读取。我关注了这个网站以供参考。

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);

我在这里做错了什么?

4

2 回答 2

3

你不能像那样阅读json。首先你不应该通过 <script> 标签包含它。您需要通过 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使用实际上从未定义过的数据变量。

于 2013-10-29T21:01:55.537 回答
1

你包含了这个 Json

{ "data": 
[
    {"latitude" : "40.10246648", "longitude" : "-83.14877599"}
]
} 

但是代码需要一个名为 data 的变量,如果您注意他们“json”文件中链接中的示例,他们就是“作弊”,它不是纯 JSON,因为它声明了一个包含字符串的全局变量。该字符串是json。因此,如果您继续遵循这些做法,您应该有一个“json”文件。

var data = '[ {"latitude" : "40.10246648", "longitude" : "-83.14877599"}]'

但我建议您遵循 Krasimir 的回答。

于 2013-10-29T21:06:14.893 回答