2014-02-17 3 views
1

Я построил графики, используя d3.js. В функции d3.tsv я передал URL-адрес скрипту php, который выполняет некоторый запрос в базе данных и возвращает результат клиенту в формате TSV.Запись данных, используемых для построения графиков d3 в файле на стороне клиента

например:

d3.tsv("getData.php", function(error, data) { 
     data.forEach(function(d) { 
     d.date = parseDate(d.date); 
     d.close = +d.close; 
     }); 

Есть ли какой-нибудь способ поставить кнопку скачать вместе с черчения график так, что, когда пользователь нажимает на кнопку, данные получает загружены в файл на стороне клиента, без запроса " getData.php "снова. Другими словами, я не хочу получать данные с сервера снова. Вместо этого я хочу использовать данные, которые были получены ранее при построении графика.

Благодарим вас за ценные советы.

ответ

0

Это выглядит, как она может помочь: http://blogs.adobe.com/cantrell/archives/2012/01/how-to-download-data-as-a-file-from-javascript.html

В настоящее время я работаю над приложением/HTML JavaScript, который позволяет автору контента полностью на стороне клиента. Я хочу, чтобы пользователи загружали этот контент и сохраняли его локально, но не отскакивали его от сервера. После некоторых проб и ошибок, я работаю достаточно хорошо, используя URI данных. Вместо того, чтобы объяснить это, это, вероятно, легче всего просто показать код:

HTML:

<a href="javascript:onDownload();">Download</a>

JavaScript код:

function onDownload() { document.location = 'data:Application/octet-stream,' + encodeURIComponent(dataToDownload); }

Единственное ограничение состоит в том, что я не могу выяснить способ дать загруженному файлу имя (и пришли к выводу, что в настоящее время это невозможно, хотя я счастлив, что оказался ошибочным). Я тестировал только код в Safari и Chrome, и в обоих случаях имя файла по умолчанию «загружается» (без расширения). Все данные находятся в файле, но это не очень интуитивный опыт для конечного пользователя.

+0

Решение приведено в коде выше работает в Chrome и Firefox, но не в IE. – Vaibhav