我一直在寻找这个问题,虽然我的问题似乎比其他人发布的类似问题容易得多,但我仍然无法找到解决方案。
我想要一个数组来填充.txt文件中的内容。事情是(与其他人有这个问题相反),我不需要对txt文件中的内容做任何事情,因为它已经是[1, 2, 3], [a, b, c], ...
等形式了。所以我唯一的事情就是喜欢做的是打印
介于<script>
和</script>
之间,有:
var locations = [
*contents of the txt file should go here*
];
多数民众赞成!有没有办法从txt文件中获取内容并在javascript中打印?
答案 0 :(得分:4)
假设您在浏览器上下文中使用javascript,则无法实现。安全限制阻止在浏览器中运行的脚本访问主机的文件系统。
编辑:很棒的评论家伙!如果您能够使用HTML5,那么您可以使用FileAPI(草案)标准获得一些文件访问功能。Paul S 提供了这个演示:http://jsbin.com/ulodaj/1/
的jsbin您想要做的是理想地将该文本文件转换为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
,因为......是的,这是邪恶的。不要使用它:)
答案 1 :(得分:2)
使用File API的FileReader
访问本地计算机上的用户所选文件available on most modern browsers,您可以使用以下内容实现所需的操作({ {3}}):
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]);
}
请注意,这是事件驱动的,因此您必须使用回调。
答案 2 :(得分: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中添加一些代码来从外部文件中获取位置。现在我只需要更新一个文件。
同样,我意识到我并没有以明确的方式描述我的问题,但我希望其他有同样问题的人可以使用这个解决方案!