我有一些 Javascript 代码来读取文件。我在浏览器中从本地文件系统打开此文件:
var rawFile = new XMLHttpRequest();
rawFile.open("GET", "test.txt", false);
rawFile.onreadystatechange = function () {
if(rawFile.readyState === 4) {
if(rawFile.status === 200 || rawFile.status == 0) {
findWord(rawFile.responseText.split("\n"));
}
}
}
rawFile.send(null);
这工作得很好,但在 Chrome 中已被弃用。发现之后我尝试使用 $.get()
像这样:
$.get("test.txt", function(result) {
alert(result);
});
但它甚至不发出警报。
有没有办法在 Chrome 和 Firefox 中读取此文件?请注意,我不想使用任何类型的 <input type="file">
并且文本数据必须以文件的行数组形式返回。
我在使用 $.get()
时收到来自 Chrome 的警告和错误和$.ajax()
.
错误:
index.html:36 XMLHttpRequest cannot load file:///C:/Users/mz/Dropbox/Shubs/test.txt. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.
我也没有在服务器上运行。所以 localhost 在这种情况下不起作用。
最佳答案
你得到:
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource error
因为您正在使用 file:// 或 C:/ 加载文件,这与错误消息保持一致,因为它们不是 http:// 所以我有两个解决方案向您建议:
- 要么从服务器(php、nodejs)发送文件并将其捕获 客户端(ajax)
- 或者您使用js文件阅读器读取文本文件
关于javascript - 从本地文件运行时 $.get() 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36913982/