Мониторинг изменений в текстовом файле с помощью ajax (javascript) - PullRequest
0 голосов
/ 01 марта 2019

Я провел свое исследование и не могу найти ответ, который работает на эту тему.У меня есть веб-страница прямо сейчас с полем ввода текста, каждый раз, когда ввод изменяется, он запускает функцию, которая записывает данные в текстовый файл.Проблема в том, что когда я пытаюсь прочитать файл и изменить содержимое элемента на содержимое текстового файла, он всегда возвращает одно и то же значение.Моя функция возвращает значение, которое мой текстовый файл был давным-давно.Вот мой код:

function OpenFile(filePath) {
    var text = "NULL";
    var ajax = new XMLHttpRequest();
    ajax.onreadystatechange = function() {
        if (ajax.readyState == 4) {
            text = ajax.responseText;
        }
    };
    ajax.open("POST", filePath, false);
    ajax.send();
    return text;
}

function WriteFile(filePath, content){
	var formdata = new FormData();
	formdata.append("content", content);
	var ajax = new XMLHttpRequest();
	ajax.open("POST", filePath);
	ajax.onreadystatechange = function() {
		if(ajax.status == 200 && ajax.readyState == 4) {
		    
		}
	};
	ajax.send(formdata);
}

Что-то не так с моим кодом, который мешает мне прочитать текущее содержимое моего файла?

1 Ответ

0 голосов
/ 01 марта 2019

Файл может быть кэширован HTTP-кешем браузера.Попробуйте добавить случайно сгенерированное число в качестве параметра запроса к вашему запросу (ваша переменная filePath).

Например,

function OpenFile(filePath) {
    var text = "NULL";
    var ajax = new XMLHttpRequest();
    ajax.onreadystatechange = function() {
        if (ajax.readyState == 4) {
            text = ajax.responseText;
        }
    };

    // HERE, append the query parameter with random number
    ajax.open("POST", filePath + '?' + Math.random(), false);

    ajax.send();
    return text;
}

Если это была проблема, то см. Здесь , чтобы узнать больше о том, как управлять очисткой кэшей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...