当来自本地文件的 运行 时,$.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:// 所以我有两个建议给你的解决方案:

  1. 要么你从服务器(php,nodejs)发送文件并在 客户 (ajax)
  2. 或者你使用js文件读取文本文件reader