使用javascript将文本文件读入变量

时间:2012-02-14 21:39:05

标签: javascript jquery parsing variables

我在服务器上有一个文本文件,其中包含具有目标时间的事件列表。它看起来像下面这样:

2012/02/11-10:00:00 EventStart Red
2012/02/11-10:10:00 EventStop Green
...

我需要做的是以某种方式读取文本文件并根据当前时间选择下一个即将发生的事件,并将该事件的每个元素分配给变量。例如,如果时间当前为2012.02.11-10:08:00,则会创建javascript变量time = '2012/02/11-10:10:00'; title = 'EventStop'; color = 'Green';

我可以用以下内容阅读文本文件:

jQuery.get('schedule.txt',function(data){
  alert(data);
});

只是不知道从哪里去,或者这甚至是最好的开始方式。我确实可以控制文本文件的格式,因此修改它是一个选项。

3 个答案:

答案 0 :(得分:9)

您说您可以修改文件的内容,因此我建议将其转换为JSON(并分隔日期/时间)。

[{"date": "2012/02/11", "time": "10:00:00", "title": "EventStart", "color": "Red"}, {"date": "2012/02/11", "time": "10:10:00", "title": "EventStop", "color": "Green"}]

然后您可以使用getJSON来获取/解析它。

jQuery.getJSON('schedule.txt',function(data){
    // data is an array of objects
    $.each(data, function(){
       console.log(this.title); // log each title
    });
});

从这里,您可以阅读时间并找出哪一个是最新的。这样的事情应该有效:

if(Date.now() <= Date.parse(this.date+' '+this.time))

所以,把它们放在一起:

jQuery.getJSON('schedule.txt',function(data){
    var matchedSchedule = {};
    // data is an array of objects
    $.each(data, function(){
       if(Date.now() <= Date.parse(this.date+' '+this.time)){
          matchedSchedule = this;  // If time matches, set a variable to this object
          return false; // break the loop
       }
    });
    console.log(matchedSchedule.title);
    // to set a "global" variable, add it to `window`
    window.eventTitle = matchedSchedule.title;
});

答案 1 :(得分:5)

不更改文字文件

$.get('sometext.txt',function(data){
    var perLine=data.split('\n');
    var myVars=[];
    for(i=0;i<perLine.length;i++)
    {
    var line=perLine[i].split(' ');
    myVars[i]={
        'time':line[0],
        'event':line[1],
        'color':line[2]
        }
    }
    console.log(myVars);
    console.log(myVars[0].time);
    console.log(myVars[0].event);
    console.log(myVars[0].color);
});

答案 2 :(得分:0)

听起来你已经完成了艰难的任务。现在只需解析返回的数据。

jQuery.get('schedule.txt',function(data){
  yourParseFunction(data);
});