当前位置:  开发笔记 > 编程语言 > 正文

如何将文本文件的内容加载到javascript变量中?

如何解决《如何将文本文件的内容加载到javascript变量中?》经验,为你挑选了6个好方法。

我在我的网络应用程序http://localhost/foo.txt的根目录中有一个文本文件,我想将它加载到javascript中的变量..在groovy中我会这样做:

def fileContents = 'http://localhost/foo.txt'.toURL().text;
println fileContents;

如何在javascript中获得类似的结果?



1> Edward Z. Ya..:

XMLHttpRequest,即AJAX,没有XML.

您执行此操作的确切方式取决于您正在使用的JavaScript框架,但如果我们忽略互操作性问题,您的代码将类似于:

var client = new XMLHttpRequest();
client.open('GET', '/foo.txt');
client.onreadystatechange = function() {
  alert(client.responseText);
}
client.send();

但是,正常情况下,XMLHttpRequest并非在所有平台上都可用,因此一些软件已经完成.再一次,最好的办法是使用像jQuery这样的AJAX框架.

一个额外的考虑因素:只有当foo.txt位于同一个域时,这才会起作用.如果它位于不同的域中,则同源安全策略将阻止您读取结果.


此外,您可以执行`client.onloadend`并获取已完成的数据
添加它可能是有用的,在onreadystatechange中,您可以访问XMLHttpRequest对象的readystate属性(在示例中:client.readystate)以了解状态是什么,因为onreadystatechange事件是为了加载,加载而引发的. ..所以你必须在onreadystatechange中等待client.readystate == 4才能使用client.responseText.
@GameAlchemist:偶然发现了你的答案.我只想注意,在大多数浏览器中,readyState都是驼峰式的,所以代码应该是这样的:```if(client.readyState === 4){}```
应该修改答案以包括检查`client.readyState`属性值.我一直在低估它,人们不会阅读评论,发现答案只是部分正确.

2> danb..:

这是我在jquery中的表现:

jQuery.get('http://localhost/foo.txt', function(data) {
    alert(data);
});


请注意,如果您使用`file://`ie:`file:/// example.com/foo.html`在本地测试它,则不起作用.Firefox抱怨语法错误和Chrome阻止,因为它将其视为跨源请求.

3> Vic..:

使用Fetch:

fetch('http://localhost/foo.txt')
  .then(response => response.text())
  .then((data) => {
    console.log(data)
  })

https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API


是访存是(最新)标准,而不是专有扩展。

4> Erik Uggelda..:

如果您只想从文本文件中获取常量字符串,则可以将其包含为JavaScript:

// This becomes the content of your foo.txt file
let text = `
My test text goes here!
`;



5> atmelino..:

要记住的一件事是Javascript在客户端上运行,而不是在服务器上运行.您无法在Javascript中真正从服务器"加载文件".会发生什么是Javascript向服务器发送请求,服务器发回所请求文件的内容.Javascript如何收到内容?这就是回调函数的用途.在爱德华的案例中,就是这样

    client.onreadystatechange = function() {

在danb的情况下,它是

 function(data) {

只要数据恰好到达,就会调用此函数.jQuery版本隐式使用Ajax,它只是通过将代码封装在库中来简化编码.



6> 12Me21..:

这几乎可以在所有浏览器中使用:

var xhr=new XMLHttpRequest();
xhr.open("GET","https://12Me21.github.io/test.txt");
xhr.onload=function(){
    console.log(xhr.responseText);
}
xhr.send();

此外,还有新的FetchAPI:

fetch("https://12Me21.github.io/test.txt")
.then( response => response.text() )
.then( text => console.log(text) )

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有