从服务器上的外部源写入Javascript到页面

时间:2013-01-23 21:28:15

标签: php file

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

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

中的txt文件中的内容

介于<script></script>之间,有:

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

多数民众赞成!有没有办法从txt文件中获取内容并在javascript中打印?

3 个答案:

答案 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 APIFileReader访问本地计算机上的用户所选文件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中添加一些代码来从外部文件中获取位置。现在我只需要更新一个文件。

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