提问者:小点点

包括现有javascript函数中的txt文件[重复]


我有一个javascript函数,它需要一些我希望从外部调用的变量。txt文件:

<script language="JavaScript">

StartCountDown("1070","08/21/2014 15:32 +0300")
StartCountDown("1071","08/21/2014 16:00 +0300")
StartCountDown("1072","08/21/2014 16:00 +0300")

... rest of the function
</script>

如果

<script language="JavaScript">

**include stuff from variables.txt here**

... rest of the function
</script>

有什么办法可以做到这一点吗?谢谢。


共1个答案

匿名用户

您可以加载一个。通过javascript/ajax同步发送txt文件。请记住,javascript代码执行将在此时等待,直到加载文件。

var request = new XMLHttpRequest();
request.open('GET', 'text.txt', false);
request.send();
var textfileContent = request.responseText;

你也可以异步地做这件事。虽然在这种情况下,你的程序逻辑将不得不等待文件被加载:

var request = new XMLHttpRequest();
request.open('GET', 'text.txt');
request.onreadystatechange = function() {
    if (request.readyState === 4) {
        var textfileContent = request.responseText;
        // continue your program flow here
    }
}
request.send();

它也可以有javascript代码计算出一个字符串.虽然这种方法是不鼓励的:

eval(textfileContent);

如果要加载的是javascript,另一个解决方案是向dom添加脚本标记:

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = "text.txt";
document.body.appendChild(script);

如果您只是加载变量值,那么json可能对您更有意义。创建如下所示的文本文件:

[
    ["1070","08/21/2014 15:32 +0300"],
    ["1071","08/21/2014 16:00 +0300"],
    ["1072","08/21/2014 16:00 +0300"]
]

在这里阅读json语法

然后按如下方式加载json文件:

var request = new XMLHttpRequest();
request.open("GET", "json.txt", false);
request.send(null);
var data = JSON.parse(request.responseText);

您的数据现在位于数组中。您可能希望访问循环中的值:

for ( var i = 0; i < data.length; i++ ) {
    var entry = data[i];
    var year = entry[0];
    var date = entry[1];
    StartCountDown(year, date);
}

如果你有一个预处理器设置,你可能想用它来把文件放在一起。或者unix命令行工具cat可以很容易地合并两个文件:

cat file1.txt file2.txt > new.txt