2013-03-14 114 views
1

我在开发我的网站时遇到了障碍。我需要它在同一个目录下拉一个文本文件,并将每行返回为一个数组。通过HTTP请求返回文本文件作为数组javascript

所以我做了我的研究,想出了一个看起来很简单的函数。但是,当我警觉(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; 
} 

回答

2

它不会那样工作,因为AJAX是A-synchronous。一旦文档准备就绪,您应该传递一个回调处理程序并调用它。

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

非常感谢,我想通了你的代码:) – Norwolf 2013-03-14 20:47:33