Javascript 如何使用Ajax加载文件数组?

Javascript 如何使用Ajax加载文件数组?,javascript,ajax,arrays,load,Javascript,Ajax,Arrays,Load,使用纯JavaScript/Ajax,我希望获取一个文件名数组(如:[“Data.txt”、“UserInfo.txt”、“Project.txt”]),然后将它们的数据加载到一个数组中 代码如下所示: var fileNames = ["Data.txt", "UserInfo.txt", "Project.txt"], fileData = [], client = new XMLHttpRequest(); client.onreadystatechange = funct

使用纯JavaScript/Ajax,我希望获取一个文件名数组(如:
[“Data.txt”、“UserInfo.txt”、“Project.txt”]
),然后将它们的数据加载到一个数组中

代码如下所示:

var fileNames = ["Data.txt", "UserInfo.txt", "Project.txt"],
    fileData = [],
    client = new XMLHttpRequest();
client.onreadystatechange = function() {
    if (client.readyState === 4) {
        fileData.push(client.responseText);
    };
};
for(i = 0; i < fileNames.length; i++){
    client.open('GET', fileNames[i]);
    client.send();
};
console.log(fileData);
var filename=[“Data.txt”、“UserInfo.txt”、“Project.txt”],
fileData=[],
client=newXMLHttpRequest();
client.onreadystatechange=函数(){
if(client.readyState==4){
fileData.push(client.responseText);
};
};
对于(i=0;i
。 这就是我试图做的,但它没有正常工作

我怎样才能做到这一点

谢谢。

您正在发出异步请求,对于同步请求,应该这样做:

var fileNames = ["Data.txt", "UserInfo.txt", "Project.txt"],
    fileData = [],
    client = new XMLHttpRequest();

for(i = 0; i < fileNames.length; i++){
    client.open('GET', fileNames[i], false);
    client.send();
    fileData.push(client.responseText);
};
console.log(fileData);
var filename=[“Data.txt”、“UserInfo.txt”、“Project.txt”],
fileData=[],
client=newXMLHttpRequest();
对于(i=0;i
这是什么
fileData.push=client.responseText
?看起来不对。而且,如果我没有错的话,这看起来像是日常的ajax问题。当您记录
fileData
时,响应尚未返回文件。@elclans感谢您指出这一点,我已经修复了第一部分,但我不确定如何处理第二部分。再次感谢……:)异步和同步请求是什么意思?有什么区别?谢谢。嗯,你的解决方案确实有效!我仍然想知道我之前评论的答案…:)异步请求在应用程序的不同线程中执行,通过这个过程,主程序不必等待指令完成,就可以执行下一个代码,这里发生的情况是,所有被每次迭代覆盖的请求和前一次被中止的请求,只有最后一个请求可以执行,当您执行同步请求时,程序必须等待请求的页面被下载以执行下一条指令。正如您所见,我们在新模型中不使用任何回调函数,如readystatechange,只使用循环。感谢您的解释,现在我明白了!