我有一个本地文本文件wordsEn.txt
,它是字典中的所有单词(小写):
a
aah
aahed
aahing
aahs
aardvark
[etcetera]
在页面加载时,我希望将它们放入数组中:
words = ["a", "aah", "aahed", "aaching", "aahs", "aardvark", ...];
这是我在尝试阅读文本文件时返回响应代码的功能:
function get_words()
{
var rawFile = new XMLHttpRequest();
rawFile.open("POST", "wordsEn.txt", true);
rawFile.onreadystatechange = function ()
{
if (rawFile.readyState === 4)
{
if (rawFile.status === 200 || rawFile.status == 0)
{
return rawFile.responseText;
}
}
}
rawFile.send(null);
}
我试图在此复制程序:Javascript - read local text file
(我承认我在没有真正理解它的作用的情况下复制了它。)
显然它不起作用,因为
var resp = get_words();
document.getElementById("spresdiv").innerHTML += "<p>" + resp + "</p>";
在undefined
div中写spresdiv
。知道为什么会这样,以及如何解决它?
在相关的说明中,有没有人知道JavaScript数组是用树还是任何其他类型的快速查找实现的? indexOf(...)
是否使用线性搜索?
答案 0 :(得分:1)
Ajax是异步的。您无法从responseText
返回get_words
。您应该使用回调。
function get_words(callback) {
var rawFile = new XMLHttpRequest();
rawFile.open("POST", "wordsEn.txt", true);
rawFile.onreadystatechange = function () {
if (rawFile.readyState === 4) {
if (rawFile.status === 200 || rawFile.status == 0) {
callback(rawFile.responseText);
}
}
}
rawFile.send(null);
}
get_words(function (resp) {
document.getElementById("spresdiv").innerHTML += "<p>" + resp + "</p>";
});