我在我的网络应用程序http://localhost/foo.txt的根目录中有一个文本文件,我想将它加载到 javascript 中的一个变量中。在 groovy 中,我会这样做:
def fileContents = 'http://localhost/foo.txt'.toURL().text;
println fileContents;
如何在 javascript 中获得类似的结果?
我在我的网络应用程序http://localhost/foo.txt的根目录中有一个文本文件,我想将它加载到 javascript 中的一个变量中。在 groovy 中,我会这样做:
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() { 警报(客户端。响应文本); } 客户端发送();
但是,通常来说,XMLHttpRequest 并非在所有平台上都可用,因此做了一些胡说八道。再一次,您最好的选择是使用像 jQuery 这样的 AJAX 框架。
一个额外的考虑:这只会在 foo.txt 位于同一域中时起作用。如果它位于不同的域中,同源安全策略将阻止您读取结果。
这是我在 jquery 中的做法:
jQuery.get('http://localhost/foo.txt', function(data) {
alert(data);
});
fetch('http://localhost/foo.txt')
.then(response => response.text())
.then((data) => {
console.log(data)
})
如果您只想要文本文件中的常量字符串,您可以将其包含为 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 访问。`(反引号)字符开始和结束模板文字,允许在文本块中使用 " 和 ' 字符。
当您尝试在本地加载文件时,这种方法很有效,因为 Chrome 不允许对具有该file://
方案的URL 进行 AJAX 。
const response = await fetch('http://localhost/foo.txt');
const data = await response.text();
console.log(data);
注意await
只能在async
函数中使用。一个更长的例子可能是
async function loadFileAndPrintToConsole(url) {
try {
const response = await fetch(url);
const data = await response.text();
console.log(data);
} catch (err) {
console.error(err);
}
}
loadFileAndPrintToConsole('https://threejsfundamentals.org/LICENSE');