2012-02-14 2 views
7

대상 시간이 포함 된 이벤트 목록이 포함 된 텍스트 파일이 서버에 있습니다. 그것은 다음과 같은 : 어떻게 든 다음 곧 이벤트를 선택하여 현재 시간을 기준으로 텍스트 파일을 읽어 변수에 해당 이벤트에 대한 각 요소를 지정하기 만하면 무엇자바 스크립트를 사용하여 텍스트 파일을 변수로 읽어들입니다.

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

. 예를 들어 시간이 현재 2012.02.11-10 : 08 : 00이면 자바 스크립트 변수 time = '2012/02/11-10:10:00'; title = 'EventStop'; color = 'Green';이 생성됩니다.

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

그냥 거기에서 어디로 모른다, 또는 심지어 가장 좋은 방법이라면 시작 :

내가 가진 텍스트 파일을 읽을 수 있어요. 텍스트 파일의 형식을 제어 할 수 있으므로 수정할 수 있습니다.

+5

그것은 서버에서 수행되어야 뭔가 모양을 변경하지 않고 클라이언트가 아닙니다. – gdoron

+0

@ gdoron 동의. – rcdmk

+0

@ gdoron 나는이 특별한 경우에도 클라이언트에서 수행해야 할 필요가 있음에도 동의합니다. – codybuell

답변

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

굉장합니다. 제안 된대로 텍스트 파일을 JSON으로 다시 포맷하고 위의 스크립트를 실행할 수 있습니다. 그러나 나는 마지막 부분을 얻지 못하고있다. 그렇다면 첫 번째 경기에서 어떻게 멈출 수 있습니까? (간단히 말해서 현재 시간은 this.time보다 짧습니다) 각 요소 (날짜, 시간, 제목, 색상)에 변수를 할당 할 수 있습니까? – codybuell

+0

'$ .each'에 전달 된 함수에서'false false;를 반환하면 루프를 멈 춥니 다. 시간이 일치하면 변수를 설정하고'return false; '를 사용할 수 있습니다. –

+1

그건 속임수 였어. jQuery.ajax와 async를 jQuery.getJSON 대신 false로 설정해야했다면 set 변수를 꺼낼 수 없었습니다 (심지어 window.varname ... 사용). – codybuell

0

당신은 이미 어려운 부분을 다뤘던 것처럼 들립니다. 이제 반환 된 데이터를 구문 분석합니다.

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

그의 어려운 부분이 데이터를 구문 분석하고 있습니다 ... – gdoron

+0

그래서이 특정 경로를 사용하면 함수에서 전역 변수를 어떻게 만들 수 있습니까? 함수 내에서 작성된 변수를 호출하려고하면 정의되지 않습니다. – codybuell

+0

@ Rocket의 답변 도움이 되나요? 아니면 여전히 답이 필요합니까? –

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); 
}); 
관련 문제