Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Импорт данных из txt (https://javascript.ru/forum/css-html/9028-import-dannykh-iz-txt.html)

lousx 25.04.2010 19:03

Импорт данных из txt
 
Часть кода
var data = [
        {
            label: "США",
            data: [[1990, 18.9], [1991, 18.7], [1992, 18.4], [1993, 19.3], [1994, 19.5], [1995, 19.3], [1996, 19.4], [1997, 20.2], [1998, 19.8], [1999, 19.9], [2000, 20.4], [2001, 20.1], [2002, 20.0], [2003, 19.8], [2004, 20.4]]
        },
        {
            label: "Россия",
            data: [[1992, 13.4], [1993, 12.2], [1994, 10.6], [1995, 10.2], [1996, 10.1], [1997, 9.7], [1998, 9.5], [1999, 9.7], [2000, 9.9], [2001, 9.9], [2002, 9.9], [2003, 10.3], [2004, 10.5]]
        },
        {
            label: "Англия",
            data: [[1990, 10.0], [1991, 11.3], [1992, 9.9], [1993, 9.6], [1994, 9.5], [1995, 9.5], [1996, 9.9], [1997, 9.3], [1998, 9.2], [1999, 9.2], [2000, 9.5], [2001, 9.6], [2002, 9.3], [2003, 9.4], [2004, 9.79]]
        },
        {
            label: "Германия",
            data: [[1990, 12.4], [1991, 11.2], [1992, 10.8], [1993, 10.5], [1994, 10.4], [1995, 10.2], [1996, 10.5], [1997, 10.2], [1998, 10.1], [1999, 9.6], [2000, 9.7], [2001, 10.0], [2002, 9.7], [2003, 9.8], [2004, 9.79]]
        },
        {
            label: "Дания",
 	    data: [[1990, 9.7], [1991, 12.1], [1992, 10.3], [1993, 11.3], [1994, 11.7], [1995, 10.6], [1996, 12.8], [1997, 10.8], [1998, 10.3], [1999, 9.4], [2000, 8.7], [2001, 9.0], [2002, 8.9], [2003, 10.1], [2004, 9.80]]
        },
        {
            label: "Швеция",
            data: [[1990, 5.8], [1991, 6.0], [1992, 5.9], [1993, 5.5], [1994, 5.7], [1995, 5.3], [1996, 6.1], [1997, 5.4], [1998, 5.4], [1999, 5.1], [2000, 5.2], [2001, 5.4], [2002, 6.2], [2003, 5.9], [2004, 5.89]]
        },
        {
            label: "Норвегия",
            data: [[1990, 8.3], [1991, 8.3], [1992, 7.8], [1993, 8.3], [1994, 8.4], [1995, 5.9], [1996, 6.4], [1997, 6.7], [1998, 6.9], [1999, 7.6], [2000, 7.4], [2001, 8.1], [2002, 12.5], [2003, 9.9], [2004, 19.0]]
        }
    ];


В переменную data нужно записать данные из файлов txt где данные будут иметь вид
21.01.2010/12:10 359.20
22.01.2010/12:15 376.73

Первый столбец - время, которое нужно задать таймстемпе Javascript
Второй - значение в данный момент времени
Для каждого лэйбэла будет свой txt с данными

Octane 25.04.2010 19:09

И какой у вас вопрос? Что не получается?

lousx 25.04.2010 19:11

Не могу реализовать импорт данных из txt файла.
Так же нужно перевести данные в таймстеп JavaScript

Octane 25.04.2010 19:21

Загружайте данные с помощью XMLHttpRequest

lousx 25.04.2010 20:02

Хорошо. Попробую разобраться.
Каким образом после загрузки данных их преобразовать в таймстеп JavaScript?

Octane 25.04.2010 20:07

http://javascript.ru/date

lousx 26.04.2010 01:18

Задрасля с XMLHttpRequest.
Не работает и все.

Работает, но только с xml.
С txt ничего не выводит

Можно пример импорта двух txt файла в Javascript и вставить их в

var data = [
{
label: "США",
data: [[1990, 18.9], [1991, 18.7], [1992, 18.4], [1993, 19.3], [1994, 19.5], [1995, 19.3], [1996, 19.4], [1997, 20.2], [1998, 19.8], [1999, 19.9], [2000, 20.4], [2001, 20.1], [2002, 20.0], [2003, 19.8], [2004, 20.4]]
},
{
label: "Россия",
data: [[1992, 13.4], [1993, 12.2], [1994, 10.6], [1995, 10.2], [1996, 10.1], [1997, 9.7], [1998, 9.5], [1999, 9.7], [2000, 9.9], [2001, 9.9], [2002, 9.9], [2003, 10.3], [2004, 10.5]]
}

Где 1992 первый столбец
13.4 - второй столбец

Octane 26.04.2010 03:14

Ну так покажите код, а лучше тестовую страничку с кодом, в котором у вас возникают ошибки или что-то не получается.

lousx 26.04.2010 03:36

http://propukal.ru/ajax/examples/1/test.html
Выводит сообщение только из xml файла, причем только из первой строчки.
Ну раз выводит, значит читает. Это хорошо.
Но суть в том, что мне нужно прочитать именно txt файл, т.к. данные записываются именно в него.
Таких файлов n.
Нужный мне скрипт в принципе готов, нужно только реализовать чтение данных из txt файлов и вставить данные соответственно для label: "США", label: "Россия" ... label: "n"

Octane 26.04.2010 05:03

Чтение данных происходит точно так же, только вместо responseXML нужно использовать responseText, затем регулярным выражением вытаскиваете из текста каждую строчку.
var responseText = "21.01.2010/12:10 359.20\r\n22.01.2010/12:15 376.73";

var lines = responseText.split(/\r\n/);

alert(lines[1]);

Ну и сервер для txt-файла должен посылать заголовок Content-Type: text/plain.

lousx 27.04.2010 07:38

Octane, помогите пожалуйста объединить 2 скрипта.
Нужно, чтобы данные в массиве d заменялись на данные в подгружаемом txt.
1 читает txt (причем, как я понимаю по нажатию кнопки)
2 рисует график.

1 скрипт:
load_text('http://www.site.ru/data.txt');

var req;

function load_text(url) {
  if (window.XMLHttpRequest) {
    req = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    req = new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (req != undefined) {
    req.onreadystatechange = function() {loadDone();};
    req.open("GET", url, true);
    req.send("");
  } else {
    alert("Can't load file");
  }
}  

function loadDone() {
  if (req.readyState == 4) { 
    if (req.status == 200) {
      alert("loaded:\n" + req.responseText);
    } else {
      alert("error:\n" + req.status + "\n" +req.statusText);
    }
  }
}



Второй:
<script id="source" language="javascript" type="text/javascript">
$(function () {
    var d = [[-373597200000, 315.71], [-370918800000, 317.45], [-368326800000, 317.50], [-363056400000, 315.86], [-360378000000, 314.93], [-357699600000, 313.19], [-352429200000, 313.34], [-349837200000, 314.67], [-347158800000, 315.58], [-344480400000, 316.47], [-342061200000, 316.65], [-339382800000, 317.71], [-336790800000, 318.29], [-334112400000, 318.16], [-331520400000, 316.55], [-328842000000, 314.80], [-326163600000, 313.84], [-323571600000, 313.34], [-320893200000, 314.81], [-318301200000, 315.59], [-315622800000, 316.43], [-312944400000, 316.97], [1159653600000, 379.03], [1162335600000, 380.17], [1164927600000, 381.85], [1167606000000, 382.94], [1170284400000, 383.86], [1172703600000, 384.49], [1175378400000, 386.37], [1177970400000, 386.54], [1180648800000, 385.98], [1183240800000, 384.36], [1185919200000, 381.85], [1188597600000, 380.74], [1191189600000, 381.15], [1193871600000, 382.38], [1196463600000, 383.94], [1199142000000, 385.44]];

    $.plot($("#placeholder"), [d], { xaxis: { mode: "time" } });

    $("#whole").click(function () {
        $.plot($("#placeholder"), [d], { xaxis: { mode: "time" } });
    });

    $("#nineties").click(function () {
        $.plot($("#placeholder"), [d], { xaxis: {
            mode: "time",
            min: (new Date("1990/01/01")).getTime(),
            max: (new Date("2000/01/01")).getTime()
        } });
    });

    $("#ninetynine").click(function () {
        $.plot($("#placeholder"), [d], { xaxis: {
            mode: "time",
            minTickSize: [1, "month"],
            min: (new Date("1999/01/01")).getTime(),
            max: (new Date("2000/01/01")).getTime()
        } });
    });
});
</script>



Содержимое txt:
[[-373597200000, 315.71], [-370918800000, 317.45], [-368326800000, 317.50], [-363056400000, 315.86], [-360378000000, 314.93], [-357699600000, 313.19], [-352429200000, 313.34], [-349837200000, 314.67], [-347158800000, 315.58], [-344480400000, 316.47], [-342061200000, 316.65], [-339382800000, 317.71], [-336790800000, 318.29], [-334112400000, 318.16], [-331520400000, 316.55], [-328842000000, 314.80], [-326163600000, 313.84], [-323571600000, 313.34], [-320893200000, 314.81], [-318301200000, 315.59], [-315622800000, 316.43]]

Не знаю нужны ли крайние квадратные скобки.

Octane 27.04.2010 08:29

1-й скрипт не нужен, раз вы в проекте используете jQuery. В этом фреймворке есть методы для асинхронной загрузки данных.

lousx 27.04.2010 08:45

:help: я повешусь... Держите меня семеро!
Всю ночь не спал, а все оказалось так...

lousx 27.04.2010 09:14

Правильно ли я получаю данные из файла data.txt?
$.get("data.txt", function(data){
   alert("Data Loaded: " + data);
 });



Может можно таким образом?
Нужно загрузить массив данных в var d
Это функция, по описанию, только для html и xml
$("#feeds").load("feeds.txt");

Правда #feeds указывает на id=feeds.
Не знаю что там нужно указывать

Octane 27.04.2010 10:44

Да, метод get выполняет все, что было в 1-м скрипте и даже больше)

Данные в txt-файле лучше храните в формате JSON, тогда можно будет воспользоваться методом $.getJSON, чтобы не мучаться с разбором строки.

lousx 28.04.2010 16:38

Цитата:

Сообщение от Octane
Данные в txt-файле лучше храните в формате JSON

Как? Если записываю их туда не я?


Часовой пояс GMT +3, время: 06:47.