1

我一直在寻找这个,虽然我的问题似乎比其他人发布的类似问题容易得多,但我仍然找不到解决方案。

我想要一个数组来填充 .txt 文件中的内容。事情是(与其他人有这个问题相反),我不需要对 txt 文件中的内容做任何事情,因为它已经是[1, 2, 3], [a, b, c], ...等的形式。所以我唯一想做的就是打印txt 文件中的内容

<script>在和之间的某处</script>,有:

var locations = [
*contents of the txt file should go here*
];

就是这样!有没有办法从 txt 文件中获取内容并用 javascript 打印出来?

4

3 回答 3

4

假设您在浏览器上下文中使用 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,因为......是的,它是邪恶的。不要使用它:)

于 2013-01-23T21:30:44.127 回答
2

使用File APIFileReader访问本地计算机上用户选择的文件,这在大多数现代浏览器上都可用您可以通过以下方式实现所需的操作(示例):

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]);
}

请注意,这是事件驱动的,因此您必须使用回调。

于 2013-01-23T22:04:16.280 回答
0

首先,请原谅我没有详细描述这个问题。我找到了解决我的问题的方法,而且我在这里还很新(而且不是那么好的程序员),但我会尝试解释答案。

首先,问题: 我有 php 页面,在该页面上有一些 javascript 代码<head>。在那个 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 中放入一些代码,从外部文件中获取位置。现在我只需要更新一个文件。

再次,我意识到我没有以清晰的方式描述我的问题,但我希望其他有同样问题的人可以使用这个解决方案!

于 2013-01-25T13:30:42.970 回答