2014-02-14 3 views
0

Мне нужно загрузить некоторые данные, хранящиеся в tsv-файле, для создания гистограммы с d3js. Я использую этот код, чтобы прочитать файл:Как читать динамический файл tsv d3js

d3.tsv("data.tsv", function(error, data) { 

Данные внутри изменения файла при каждом щелчке кнопки, которая вызывает функцию сервлета для обновления этих данных.

Проблема в том, что я не могу получить данные обновления, поэтому я застрял на данных кулака, хранящихся в файле.

Я избегаю этой проблемы при создании n-файлов и чтении этих разных файлов.

Но я хочу использовать тот же файл.

ответ

0

Так вот вы идете,

  1. OnClick получить новый файл
  2. После вы уверены вы updatedFile читать его с помощью d3.tsv (вы можете использовать обратный вызов здесь), так и внутри что дает вызов функции, которая делает чертеж
+0

Это то, что я делаю, но это не работает. Я всегда получаю старые ценности. –

+0

можете ли вы предоставить более подробную информацию о части кода или дизайна или скрипке, если возможно –

0

Это связано с тем, что ваш браузер кэширует файл, а не перезагружает его. Вы можете избежать этого, добавив параметр изменения к вызову, который ничего не делает, но предотвращает кеширование браузера:

var counter = 0; 
// ... 
d3.tsv("data.tsv?foo=" + i++, function(error, data) { 
    // ... 
}); 
+0

Спасибо Lars. С вашим советом поведение изменилось. Теперь он считывает правильное значение один раз по запросу 5/6. Я добавил эту задержку перед вызовом функции чтения: setTimeout (function() {update (xmlhttp.responseText);}, 3000); Теперь он работает –

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