【问题标题】:Monitoring changes in text file with ajax (javascript)使用 ajax (javascript) 监视文本文件中的更改
【发布时间】:2019-07-23 21:36:02
【问题描述】:

我已完成研究,但找不到适用于该主题的答案。我现在有一个带有文本输入字段的网页,每次更改输入时,它都会运行一个将数据写入文本文件的函数。问题是当我尝试读取文件并将元素内容更改为文本文件的内容时,它总是返回相同的值。我的函数返回我的文本文件很久以前的值。这是我的代码:

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);
}

我的代码有什么问题导致我无法读取文件的当前内容吗?

【问题讨论】:

  • 可能是因为浏览器(或服务器)使用了缓存。转到开发面板(网络)并检查您对阅读文件的发布请求。

标签: javascript php html ajax server


【解决方案1】:

文件可能被浏览器的 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;
}

如果这就是问题所在,那么请see here 询问有关如何管理清除缓存的更多问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多