Javascript 如何使用Ajax加载文件数组?
使用纯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
[“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,只使用循环。感谢您的解释,现在我明白了!