2014-01-08 137 views
6

我剛剛學習d3,並試圖從CSV文件中導入數據,但我不斷收到錯誤「XMLHttpRequest無法加載文件:/// Users/Laura/Desktop/SampleECG.csv。只有HTTP支持跨源請求。「我已經搜索瞭如何解決這個錯誤,並在本地Web服務器上運行它,但我還沒有找到適用於d3.v2.js的解決方案。這裏是一個代碼示例:無法從d3導入csv文件中的數據

var Time = [] 
    ECG1 = [] 

d3.csv("/Desktop/d3Project/Sample.csv", function(data) 
     { 
     Time = data.map(function(d) {return [+d["Time"]];}); 
     ECG1 = data.map(function(d) {return [+d["ECG1"]];}); 
     console.log(Time) 
     console.log(ECG1) 
     }); 

任何幫助將不勝感激。

+1

您是否正在運行本地網絡服務器?見例如[本教程](http://alignedleft.com/tutorials/d3/setup)。 –

+0

您遇到的本地Web服務器有哪些問題? Ajax請求不會與'file:'協議一起工作,因此需要Web服務器(無論是否本地)。理想情況下,將同時服務器的腳本和csv文件。 – nullability

+0

我遇到了同樣的問題。檢查你是否給了正確的文件路徑?並打開file:///,您應該使用本地服務器執行請求。嘗試先用firefox打開。因爲它處理請求異常。請儘可能提供更多信息(即)您的控制檯日誌和更多信息。 – divakar

回答

15

這讓我很困惑(我也是d3初學者)。

因此,出於某種原因,Web瀏覽器對於加載本地數據並不滿意,可能出於安全原因等等。無論如何,爲了解決這個問題,你必須運行一個本地Web服務器。這很容易。

在你的終端,cd後-ing到您的網站的文檔根目錄(感謝@daixtr),類型:

python -m SimpleHTTPServer 8888 & 

好了,現在只要是終端窗口打開並運行,本地網絡8888服務器將會運行。

所以在我的情況下,原來的網頁我工作被稱爲

file://localhost/Users/hills/Desktop/website/visualizing-us-bls-data-inflation-and-prices.html 

當我在Chrome中打開它。要打開我的頁面我的本地Web服務器上,我剛纔輸入(進在Chrome搜索欄):

http://localhost:8888/Desktop/website/visualizing-us-bls-data-inflation-and-prices.html 

現在,閱讀的CSV應該工作。奇怪,我知道。

+0

我試過這個,最終在控制檯中得到這個錯誤: XMLHttpRequest無法加載http:// localhost:8888/test.csv。請求的資源上沒有「Access-Control-Allow-Origin」標題。因此不允許原產地'null'訪問。 你碰到過這個嗎? –

+0

與您的評論有相同的問題,只需以'.csv'相同的方式請求html頁面,以便它們具有相同的來源。因此,不要在瀏覽器中從文件中打開'.html',而是在瀏覽器中請求:'http:// localhost:8888/Desktop/website/mypage.html' –

5

對於那些使用內置python web服務器和仍然遇到問題的人,請記住並確保在您認爲是您的DocumentRoot的正確路徑上運行「python -m SimpleHTTPServer 8888」調用。也就是說,你不能在任何地方運行'python -m SimpleHTTPServer 8888'。你必須實際'cd/to/correct/path /'包含你的index.html或data.tsv,然後從那裏運行'python -m SimpleHTTPServer 8888'。

+0

這是一個很好的觀點。我將它添加到主要答案,以便人們看到。 –

0

使用Firefox,idk Chrome試圖完成什麼