【发布时间】:2016-10-12 02:50:34
【问题描述】:
我只是在做一个小项目,这是我读取本地文本文件的代码:
function readTextFile(file)
{
var rawFile = new XMLHttpRequest();
rawFile.open("GET", file, false);
rawFile.onreadystatechange = function ()
{
if(rawFile.readyState === 4)
{
if(rawFile.status === 200 || rawFile.status == 0)
{
var allText = rawFile.responseText;
alert(allText);
}
}
}
rawFile.send(null);
return allText;
}
我很确定我只是把退货放错地方了。有谁知道我应该把它放在哪里,或者可以在整体上做出更好的功能?
【问题讨论】:
-
XMLHttpRequest.prototype.onreadystatechange异步返回结果,allText可能未在return allText中定义。另见Jquery load() only working in firefox? -
没关系...你在回调函数中定义了var allText,所以当你尝试返回它时它超出了范围
-
@guest271314 - 他正在做一个“同步”xhr
-
@JaromandaX 是的,试图在之前的评论中传达这一点,提到如何启动 chromium、带有标志的 chrome 以在
file:protocole 请求文件 -
@guest271314 - 不,不是,如果您将
false作为第三个参数传递给.open- 当您使用var allText;修复范围问题时,代码可以正常工作(同步) - 虽然它仍然无法在 Chrum 中工作,因为这是一个跨域请求的愚蠢概念
标签: javascript file text local