JS чтение файла

116
29 июня 2019, 13:30

У меня есть небольшое web-приложение с использованием JS. Она лежит локально и должно точно так же использоваться локально. Без PHP и прочего.

В локальный файл (лежит в той же папке что и index.html) записываются данные. Сами данные - это всего лишь одно duble число (1 строка и все).

Как мне, в JS коде считать это число в переменную? ajax, jquery и не помогает. Мне надо чтобы я вывел эту переменную в alert(), а мне выводит либо [Object object] либо undefined. Перепробовал уже кучу способов из гугла - ничего не помогло.

UP:

url: file:///C:/Users/ROCKer/Desktop/test/index.html

var t;
 $.ajax({
    type:    "GET",
    url:     "1.txt",
    success: function(text) {
        t = text;
    },
    error:   function() {
        // An error occurred
    }
});
alert(t);
Answer 1
    var t = '';
    // мне больше нравится так
    fetch('./foo.txt')
    .then(res => res.text())
    .then(data => {
        t = data;
        alert(t);
    })
    .catch(err => {
        throw err;
    });
    // но можно и так
    $.ajax({
        type: 'GET',
        url: './foo.txt',
        dataType: 'text',
        mimeType: 'application/text',
        success: function(text) {
            t = text;
            alert(t);
        },
        error: function(err) {
            throw err;
        }
    });
Answer 2

Насколько я помню, JS не позволяет работать непосредственно с файлами в файловой системе, как другие ЯП (Java, C++, C#) поскольку твой код выполняет браузер и только он сможет достучаться до файлов (и то не факт) Есть документация И отличная статья с примерами Основная идея в том, что ты в своем index.html файле готовишь форму выбора и загрузки файла и уже посредством JS читаешь информацию из файла.

Есть другой способ получения информации, это запрос на сервер, который вернет тебе этот файл, но ты не хочешь использовать PHP и прочее :)

Надеюсь помог.

Answer 3

Как сказал @Grundy

если можно менять формат данных в файле, то можно загружать его как js код создавая элемент script, и передавая ему в src путь к файлу. В файле должен быть допустимый js код, например var a = 10, в этом случае после загрузки и выполнении скрипта можно будет обратиться к переменной a и получить значение 10

.........text.txt
var x = 10;
.................


....... основной js 

var fn; // переменная куда считаем наш файл 
// функция для чтения js внутри другого js 
function include(url) {
    var script = document.createElement('script');
    script.src = url;
    document.getElementsByTagName('head')[0].appendChild(script);
}
function xyz(){
    include("text.txt");   // подключим js и возьмем из него нашу переменную  
    return x;
}
function моя_функция_которая_постоянно_должна_считывать_новые_данные(){
    .......
    xyz()
    ..........
}
Answer 4

А если сохранять данные в формате json и потом парсить их:

var url = "file.json";
var xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.send();
xhr.onreadystatechange = function(){
    if (xhr.readyState == 4) {
        if (xhr.status == 200) {
            var result = JSON.parse(xhr.responseText);
        }
    }
}
READ ALSO
Drap and Drop До и после при перемещении стрелки

Drap and Drop До и после при перемещении стрелки

помогите осуществить такой механизмНашел вот такой пример jsfiddle

105
Cannot read property 'find' of undefined, dexie async await

Cannot read property 'find' of undefined, dexie async await

Проблема возникает из-за того, что получение данных из бд происходит медленно, без async\await получается, что чтение из бд слишком медленное

123
Изменение типа данных у элементов со свойством contentEditable со строки на число

Изменение типа данных у элементов со свойством contentEditable со строки на число

Необходимо задать тип вводимых данных - число, но не срабатываетКак исправить?

137
Анимация перехода на другую страницу React

Анимация перехода на другую страницу React

Пытаюсь сделать анимацию перехода на другую страницу следующим образом: Для начала я обернул в HashRouter мой контейнер, который меняется при...

145