Включить файл.txt в существующую функцию JavaScript

У меня есть эта функция 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 ответ

Решение

Вариант 1: загрузить текст в переменную

Вы можете загрузить файл.txt синхронно через javascript/ajax. имейте в виду, что выполнение вашего кода 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 из переменной (не рекомендуется)

также возможно, чтобы код JavaScript оценивался из строки. хотя этот метод не рекомендуется:

eval(textfileContent);

Вариант 2: включить JavaScript через скрипт

если вы хотите загрузить javascript, другое решение заключается в добавлении тега script в dom:

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

Вариант 3: используйте json для инициализации переменных (лучше всего подходит для ваших нужд)

если вы просто загружаете значения переменных, 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);
}

Вариант 4: объединить до выполнения

если у вас есть настройка препроцессора, вы можете использовать ее для объединения файлов. в качестве альтернативы инструмент командной строки Unix cat может легко объединить два файла:

cat file1.txt file2.txt > new.txt
Другие вопросы по тегам