1

我在开发网站时遇到了障碍。我需要它在同一目录中提取一个文本文件并将每一行作为一个数组返回。

所以我做了研究,想出了一个看起来很简单的函数。但是,当我提醒(theArray);它返回未定义。我究竟做错了什么?

function pullText(x)
{
  var fullText = [];
  fileReturn=new XMLHttpRequest();
  fileReturn.onreadystatechange=function()
  {
    if (fileReturn.readyState==4 && fileReturn.status==200)
    {
      entireTextFile = fileReturn.responseText;
      // alert(entireTextFile); works as expected here
      lines = fileReturn.responseText.split("\n");
      // alert(lines); works as expected here
      fullText = lines;
    }
  }
  // alert(fullText); does not work.
  fileReturn.open("GET",x,true);
  fileReturn.send();
  return fullText;
}
4

1 回答 1

2

它不会那样工作,因为 AJAX 是异步的。您应该传递一个回调处理程序并在文档准备好后调用它。

function pullText(x, callback)
{
//      var fullText = []; not necessary
  fileReturn=new XMLHttpRequest();
  fileReturn.onreadystatechange=function()
  {
    if (fileReturn.readyState==4 && fileReturn.status==200)
    {
      entireTextFile = fileReturn.responseText;
      // alert(entireTextFile); works as expected here
      lines = fileReturn.responseText.split("\n");
      // alert(lines); works as expected here
      callback(lines);
    }
  }
  // alert(fullText); does not work.
  fileReturn.open("GET",x,true);
  fileReturn.send();
}

pullText(whatever, function(lines) {
    // use lines here
});
于 2013-03-14T18:20:29.570 回答