当来自本地文件的 运行 时,$.get() 无法正常工作
$.get() does not work properly when running from local file
我有一些 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()
和 $.ajax()
时从 Chrome 收到警告和错误。
错误:
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 在这种情况下不起作用。
你试过吗?
$.ajax({
url: "test.txt",
async: false,
success: function (data){
console.log(data);
}
});
然后检查浏览器的控制台。
您将获得:
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文件读取文本文件reader
我有一些 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()
和 $.ajax()
时从 Chrome 收到警告和错误。
错误:
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 在这种情况下不起作用。
你试过吗?
$.ajax({
url: "test.txt",
async: false,
success: function (data){
console.log(data);
}
});
然后检查浏览器的控制台。
您将获得:
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文件读取文本文件reader