2013-06-20 148 views
26

我嘗試使用d3.json()導入本地.json文件。使用d3.json導入本地json文件不起作用

文件filename.json存儲在與我的html文件相同的文件夾中。

然而,(json)參數爲null。

d3.json("filename.json", function(json) { 
    root = json; 
    root.x0 = h/2; 
    root.y0 = 0;}); 
    . . . 
} 

我的代碼基本上是如果你在瀏覽器中運行一樣在這個d3.js example

+1

如果您使用的是Chrome,您可以嘗試使用'--disable-web-security'運行它。 –

+0

您也可以在您的計算機上運行本地服務器並以此方式訪問該頁面。 WAMP和MAMP都可以很好地工作,或者你可以從MAC上的命令行運行:http://lifehacker.com/start-a-simple-web-server-from-any-directory-on-your-ma-496425450 –

+0

我應該更仔細地閱讀d3.json API。對不起浪費人們的時間。 –

回答

23

,你cannot load local files

你可以,但是與jQuery's get加載JSON或簡單地在代碼中硬編碼是這樣的:

var json = {"my": "json"}; 
d3.json(json, function(json) { 
    root = json; 
    root.x0 = h/2; 
    root.y0 = 0; 
}); 
+0

感謝您的回答 –

+1

可以用最新的Firefox完成。 – Amit

+1

你能否請你解釋一下你的代碼...我該怎麼從這個'''d3.json(文件名,函數(錯誤,數據){...}'''(我應該提交一個單獨的問題嗎?) –

6

http://bl.ocks.org/eyaler/10586116 請參見該代碼,這是從文件中讀取並創建一個圖表。 我也有同樣的問題,但後來我發現問題出在我使用的json文件中(一個額外的逗號)。如果你在這裏得到null,嘗試打印你得到的錯誤,就像這樣。

d3.json("filename.json", function(error, graph) { 
 
    alert(error) 
 
})

這是工作在Firefox,Chrome瀏覽器在某種程度上它不是印刷錯誤。

1

你不能隨便閱讀本地文件,至少不是在Chrome中,也可能不在其他瀏覽器中。

最簡單的解決方法是簡單地將您的JSON數據包含在您的腳本文件中,然後簡單地擺脫您的d3.json調用並將代碼保留在您傳遞給它的回調中。然後

您的代碼應該是這樣的:

json = { ... }; 

root = json; 
root.x0 = h/2; 
root.y0 = 0; 
... 
4

添加到以前的答案是簡單的使用由大多數Linux/Mac電腦提供的HTTP服務器(單單是安裝蟒蛇)。

在你的項目的根

python -m SimpleHTTPServer 

運行以下命令,然後不是訪問file://.....index.html打開http://localhost:8080或通過運行服務器提供的端口的瀏覽器。通過這種方式,瀏覽器可以不受阻塞地獲取項目中的所有文件。