2013-10-29 93 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"}]' 

但我建議你遵循克拉西米爾的答案。