2013-10-29 69 views
1

我是JavaScript新手。我的JavaScript(script.js)从JSON文件读取,如下所示。脚本读取时不使用JQuery。我跟着THIS网站参考。从JavaScript中的本地JSON文件读取时出错

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

我在做什么错在这里?

+1

在您的'json'文件前加上“data =”,它应该可以工作 – dandavis

回答

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使用数据变量实际上从未定义。

+0

但是我正在从文件中读取JSON。我还需要使用ajax吗? – Sarvavyapi

+0

Ajax是通过javascript加载文件的方式。这是对该文件的http请求。你可以通过PHP或其他服务器端技术做同样的事情,但是这应该在显示页面之前发生。 – Krasimir

1

您列入此JSON

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

,但如果你在他们的“JSON”文件他们是“欺骗”的链接注意例子中的代码期待一个可变称为数据, ,它不是纯粹的JSON,因为声明了一个包含字符串的全局变量。那个字符串是json。 所以如果你继续这些练习,你应该有一个“json”文件。

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

但我建议你遵循克拉西米尔的答案。