Javascript 从本地文件运行时,$.get()无法正常工作

Javascript 从本地文件运行时,$.get()无法正常工作,javascript,jquery,file,readfile,Javascript,Jquery,File,Readfile,我有一些Javascript代码来读取文件。我在浏览器中从本地文件系统打开此文件: var rawFile = new XMLHttpRequest(); rawFile.open("GET", "test.txt", false); rawFile.onreadystatechange = function () { if(rawFile.readyState === 4) { if(rawFile.status === 200 || rawFile.status ==

我有一些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中读取此文件?请注意,我不想使用任何类型的
,文本数据必须以文件的行数组形式返回

当使用
$.get()
$.ajax()
时,我从Chrome收到警告和错误

错误:

html:36 XMLHttpRequest无法加载file:///C:/Users/mz/Dropbox/Shubs/test.txt. 跨源请求仅支持协议方案:http、数据、chrome、chrome扩展、https、chrome扩展资源

我也没有在服务器上运行。所以本地主机在这种情况下不起作用。

您尝试过这个吗

$.ajax({
            url: "test.txt",
            async: false,
            success: function (data){
                console.log(data);
            }
        });
然后检查浏览器的控制台。

您尝试过这个吗

$.ajax({
            url: "test.txt",
            async: false,
            success: function (data){
                console.log(data);
            }
        });
然后检查浏览器的控制台。

您将获得:

跨源请求仅支持以下协议方案:http, 数据,chrome,chrome扩展,https,chrome扩展资源错误

因为您正在使用file://C://加载文件,这与错误消息保持一致,因为它们不是http://,所以我有两个解决方案建议您:

  • 您可以从服务器(php、nodejs)发送文件并捕获它 客户端(ajax)
  • 或者使用js文件读取器读取文本文件
  • 你会得到:

    跨源请求仅支持以下协议方案:http, 数据,chrome,chrome扩展,https,chrome扩展资源错误

    因为您正在使用file://C://加载文件,这与错误消息保持一致,因为它们不是http://,所以我有两个解决方案建议您:

  • 您可以从服务器(php、nodejs)发送文件并捕获它 客户端(ajax)
  • 或者使用js文件读取器读取文本文件


  • 开发控制台上是否有任何错误?@IceManSpy是的,请稍等,编辑我的帖子
    $。get
    无法处理
    文件://
    。考虑不要在本地文件上做Ajax。你使用MVC还是ASP.NET?@ ApkRyFOS,那么,我该如何加载文件?在DEV控制台上有什么错误吗?@ ICEMANSISTY是的,请稍候,编辑我的帖子<代码> $。考虑不要在本地文件上做Ajax。你使用MVC还是ASP.NET?@ ApkRyFOS,那么,我如何加载文件?YEP,得到这个错误:<代码> jQuy2.2.3.M.js:4 XMLHtpReQuest不能加载。file:///C:/Users/mz/Dropbox/Shubs/test.txt. 跨源请求仅支持协议方案:http、data、chrome、chrome extension、https、chrome extension resource。您可以在url中尝试类似
    text.txt&callback=?
    的内容吗?您的答案就在这里,您要求浏览器使用
    文件://
    协议获取
    文件,并且它是(正确的)说“不”。如果您将页面放在Web服务器(例如IIS、Apache)上并从那里运行(例如
    http://localhost/index.html
    )它可能工作正常。向URL添加参数不会改变任何东西;文件://URL不允许用于ajax请求。(还要注意,
    async:false
    是不推荐的,因为冻结整个浏览器以等待ajax调用返回有点不太好)我自己使用它。。因此,我不想使用server.Yep,出现以下错误:
    jquery-2.2.3.min.js:4 XMLHttpRequest无法加载file:///C:/Users/mz/Dropbox/Shubs/test.txt. 跨源请求仅支持协议方案:http、data、chrome、chrome extension、https、chrome extension resource。
    您可以在url中尝试类似
    text.txt&callback=?
    的内容吗?您的答案就在这里,您要求浏览器使用
    文件://
    协议获取
    文件,并且它是(正确的)说“不”。如果您将页面放在Web服务器(例如IIS、Apache)上并从那里运行(例如
    http://localhost/index.html
    )它可能工作正常。向URL添加参数不会改变任何东西;文件://URL不允许用于ajax请求。(还要注意,
    async:false
    是不推荐的,因为冻结整个浏览器以等待ajax调用返回有点不太好)我自己使用它。。所以我不想使用服务器。第二个答案不符合我的要求。。对于FieleRADER,你必须使用<代码> <代码>,为什么不使用它呢?因为我不想每次打开PaGESO时选择同一个文件。我认为你必须考虑我的第一个解决方案,更简单更干净。没有服务器没有办法吗?第二个答案不符合我的要求。对于FieleRADER,你必须使用<代码> <代码>,为什么不使用它呢?因为我不想每次打开PaGESO时选择同一个文件,我认为你必须考虑我的第一个解决方案,更简单更干净。没有服务器没有办法吗?