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



我已经搜索了一段时间了,尽管我的问题似乎比其他人发布的类似问题容易得多,但我仍然找不到解决方案。

我想要一个数组来填充.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因为...是的,这是邪恶的。不要使用它:)

使用文件 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]);
}

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

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

一、问题:我有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 中放入一些代码,从外部文件中获取位置。现在我只需要更新一个文件。

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

相关内容

  • 没有找到相关文章

最新更新