JavaScript - XMLHttpRequest() issues



我一直在查看许多先前问的问题,但我仍然对如何使此fileReader工作感到困惑。目前,我拥有的代码如下:

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); 
}

我有一个名称列表,对于每个名称,我都有一个带有"信息"的.txt文件。 updateWineProfile在名称列表中的onclick事件处理程序中被调用。

我的问题是它仅在第二次点击后起作用。想象一下我有" A"one_answers" B"的列表。如果我第一次单击" A",它将读取我的小"文本加载"行。但是,一旦我单击" B",它将在显示项目B的名称时使用项目A的BIO填充'Info'

this.responseText传递到formatText()时似乎没有更新。我认为添加reader.onload可以解决此问题,但还没有解决。

(我只读本地文件)

您需要将功能分配给onloadonreadystatechange

您正在调用displayContents(wineName)doneLoading(wineName) 立即,然后分配其返回值(在两种情况下,undefined,因为它们没有return语句)。

最新更新