我已经搜索了一段时间了,尽管我的问题似乎比其他人发布的类似问题容易得多,但我仍然找不到解决方案。
我想要一个数组来填充.txt文件中的内容。问题是(与其他人有这个问题相反),我不必对 txt 文件中的内容做任何事情,因为它已经是 [1, 2, 3], [a, b, c], ...
等的形式。所以我唯一想做的是打印 txt 文件中的内容
在<script>
和</script>
之间,有:
var locations = [
*contents of the txt file should go here*
];
就是这样!有没有办法从 txt 文件中获取内容并在 javascript 中打印它们?
假设你在浏览器上下文中使用javascript,这是不可能的。安全限制会阻止在浏览器中运行的脚本访问主机的文件系统。
编辑:很棒的评论伙计们!如果您能够使用 HTML5,那么您可以使用 FileAPI(草稿)标准进行一些文件访问功能。
Paul S 提供了这个 jsbin 来演示: http://jsbin.com/ulodaj/1/
理想情况下,您要做的是将该文本文件转换为JSON格式,然后使用FileAPI从磁盘读取字符串。从那里,只需locations = JSON.parse(fileText)
编辑:因此,如果文本文件驻留在PHP站点的目录中,为什么不使用PHP来读取文件并按照OP中的指示写入数据?
这里的问题是,你仍然希望你的输入文件是有效的JSON——[1, 2, 3], [a, b, c]
不是。对{ foo: [a,b,c], bar: [1,2,3] }
进行微小的更改就可以解决问题。请注意,我什至不会提到使用eval
因为...是的,这是邪恶的。不要使用它:)
使用文件 API 的FileReader
访问用户在其本地计算机上选择的文件(在大多数现代浏览器上都可用),您可以通过如下内容(示例)实现所需的操作:
var locations;
input.onchange = function () { // `input` some <input type="file">
var fr = new FileReader();
fr.onload = function (e) {locations = this.result.split("n");}; // make this callback your next stage
fr.readAsText(this.files[0]);
}
请注意,这是事件驱动的,因此您必须使用回调。
首先,请原谅我没有详细描述这个问题。我已经找到了我的问题的解决方案,我在这里相当新(而且不是那么好的程序员),但我会尝试解释答案。
一、问题:我有php页面,在<head>
部分我有一些javascript代码。在该 javascript 中,我想从 txt 文件加载内容。txt 文件中的确切文本是:
var locations = [
['a', 123, 456, 'foo', 'bar'],
[...],
['b', 456, 789, 'bar', 'foo'],
];
我知道这不是一个漂亮的解决方案,我知道var locations [];
部分应该在 javascript 中而不是在 txt 文件中,但这对我来说很好用。
溶液:在javascript中,我把<?php echo file_get_contents('text.txt'); ?>
放在我希望文本文件的内容显示的位置,就是这样!
它解决我问题的原因是因为我必须经常更新位置数组,并且代码出现在大约 30 页上。我不想在有新位置时更新这些页面的所有<head>
部分,所以我想在 javascript 中放入一些代码,从外部文件中获取位置。现在我只需要更新一个文件。
再一次,我意识到我没有以清晰的方式描述我的问题,但我希望有同样问题的其他人可以使用这个解决方案!