2014-01-08 3 views
6

Я просто изучаю d3, и я пытаюсь импортировать данные из CSV-файла, но я продолжаю получать ошибку «XMLHttpRequest не может загрузить файл: /// Пользователи/Laura/Desktop/SampleECG.csv. Запросы на кросс-начало поддерживаются только для HTTP. ". Я искал, как исправить эту ошибку и запустил ее на локальном веб-сервере, но я не нашел решение, которое работает для d3.v2.js. Вот пример кода:Не удается импортировать данные из файла csv в d3

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

Какие проблемы вы столкнулись с локальным веб-сервером? Запросы Ajax не будут работать с протоколом 'file:', поэтому требуется веб-сервер (независимо от того, является ли он локальным или нет). В идеале, сервер и сценарий CSV-файла должны были быть с того же сервера. – nullability

+0

Я столкнулся с той же проблемой. проверьте, дал ли вы правильный путь к файлу? и открыть файл: ///, вы должны выполнить запрос с использованием локального сервера. Сначала попробуйте открыть с помощью firefox. поскольку он обрабатывает исключение запроса. И, пожалуйста, предоставьте больше информации (i.e) свои журналы консоли и дополнительную информацию. – divakar

ответ

15

Это тоже смущает меня (я тоже начинаю d3).

По какой-то причине веб-браузеры недовольны тем, что вы загружаете локальные данные, возможно, из соображений безопасности или что-то в этом роде. В любом случае, чтобы обойти это, вам нужно запустить локальный веб-сервер. Это легко.

В терминале, после cd -ную на своем веб-сайте документ корня (спасибо @daixtr), введите:

python -m SimpleHTTPServer 8888 & 

Хорошо, теперь, пока что окно терминала и работает, локальный веб-8888 сервер будет запущен.

Так что в моем случае, изначально веб-страница, которую я работал над называлась

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

Когда я открыл его в хроме. Чтобы открыть свою страницу на моем локальном веб-сервере, я просто напечатал (в строке поиска хром):

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

Имеет ту же проблему, что и ваш комментарий, просто запросите страницу html так же, как и '.csv', чтобы они имели одинаковое происхождение. Поэтому вместо того, чтобы открывать '.html' из файла в проводнике Windows, запросите его в браузере:' http: // localhost: 8888/Desktop/website/mypage.html' –

5

Для тех, кто использует встроенный веб-сервер python и которые все еще испытывают проблемы, помните и помните, что вы запускаете вызов python -m SimpleHTTPServer 8888 на правильном пути, который вы считаете своим DocumentRoot. То есть вы не можете просто запускать «python -m SimpleHTTPServer 8888» в любом месте. Вы должны на самом деле «cd/to/correct/path /», содержащие ваш index.html или data.tsv, а затем оттуда запускайте «python -m SimpleHTTPServer 8888».

+0

Это замечательный момент. Я добавил его к основному ответу, чтобы люди увидели. –

0

Использование Firefox, idk, что пытается сделать Chrome

Смежные вопросы