이전에 많은 질문을 살펴 봤는데이 fileReader를 작동시키는 방법에 대해 여전히 혼란 스럽습니다. 현재 가지고있는 코드는 다음과 같습니다.JavaScript - XMLHttpRequest() 문제
var reader = new XMLHttpRequest() || new ActiveXObject('MSXML2.XMLHTTP');
function updateWineProfile(name){
//write bio info
var filePath = "Data/"+name+".txt";
loadFile(filePath, name);
}
function loadFile(filePath, wineName) {
reader.onreadystatechange = displayContents(wineName);
reader.onload = doneLoading(wineName);
reader.open('get', filePath, true);
reader.send();
}
function displayContents(wineName) {
if(reader.readyState === 4 && reader.status === 200) {
reader.responseText = formatText(reader.responseText, wineName);
//document.getElementById('Info').innerHTML = "";
} else{
reader.responseText = formatText(reader.responseText, wineName);
document.getElementById('Info').innerHTML = formatText("Text Loading. Please Try Again.", wineName);
}
}
function doneLoading(name) {
document.getElementById('Info').innerHTML = formatText(this.responseText, name);
}
나는 이름 목록을 가지고 있으며 각 이름에 대해 "Info"라는 .txt 파일을 가지고 있습니다. updateWineProfile
은 이름 목록에서 onClick 이벤트 처리기 중에 호출됩니다.
내 문제는 두 번째 클릭 후에 만 작동한다는 것입니다. 내가 'A'와 'B'의 목록을 가지고 있다고 상상해보십시오. 'A'를 처음 클릭하면 작은 '텍스트로드'행을 읽습니다. 하지만 'B'를 클릭하면 항목 B의 이름을 표시하면서 'Info'
을 항목 A의 약력으로 채 웁니다.
formatText()
에 전달되었을 때 this.responseText
은 업데이트되지 않은 것으로 보입니다. reader.onload
을 추가하면이 문제를 해결할 수 있다고 생각했지만 그렇지 않았습니다.
(I은 로컬 파일을 읽고 있어요)
O 내 와우 ... 신인이 얼마나 슬픈 일입니까? 고마워요! – PieMan