如何将文本文件的内容加载到JavaScriptvariables中?

我有我的Web应用程序的http://localhost/foo.txt的根文本文件,我想加载到一个variables在JavaScript ..在常规我会这样做:

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

我怎样才能在JavaScript中获得类似的结果?

XMLHttpRequest,即AJAX,没有XML。

你这样做的确切方式取决于你使用的是什么JavaScript框架,但是如果我们不考虑互操作性问题,你的代码将如下所示:

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

通常来说,虽然XMLHttpRequest在所有平台上都不可用,所以有些function已经完成。 再一次,你最好的select是使用像jQuery这样的AJAX框架。

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

这里是我如何在jQuery中做到这一点:

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

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

 // This becomes the content of your foo.txt file let text = ` My test text goes here! `; 
 <script src="foo.txt"></script> <script> console.log(text); </script> 

有一件事要记住,Javascript运行在客户端,而不是在服务器上运行。 你不能真正的从Javascript中的服务器“加载文件”。 会发生什么是Javascript发送一个请求到服务器,服务器发回请求的文件的内容。 Javascript如何接收内容? 这就是callback函数的作用。 在爱德华的情况下,就是这样

  client.onreadystatechange = function() { 

而在丹伯的情况下,这是

  function(data) { 

这个函数在数据碰巧到达时被调用。 jQuery版本隐式使用Ajax,它只是通过将代码封装在库中来简化编码。

使用jQuery时,而不是使用jQuery.get ,例如

 jQuery.get("foo.txt", undefined, function(data) { alert(data); }, "html").done(function() { alert("second success"); }).fail(function(jqXHR, textStatus) { alert(textStatus); }).always(function() { alert("finished"); }); 

你可以使用.load ,它给你一个更精简的forms:

 $("#myelement").load("foo.txt"); 

.load给你也可以select加载部分页面,可以派上用场,参见api.jquery.com/load/ 。

如果您的input结构为XML,则可以使用importXML函数。 (更多信息在这里quirksmode )。

如果它不是XML,并且没有用于导入纯文本的等效函数,则可以在隐藏的iframe中打开它,然后从那里读取内容。