我有一个使用jQuery AJAX读取服务器上的txt文件的问题。基本上,我有3个文件,所有这些文件都在同一目录中的服务器上(以后不会再使用)。一个HTML文件包含一个按钮,当您单击它时会启动一个AJAX请求,然后将一个字符串(默认字符串)发送到创建txt文件的PHP文件。我有另一个HTML文件,它在1500毫秒内有一个简单的setInterval,它得到了txt文件的值,如果值为==='则默认字符串'它进行另一个AJAX调用,将文本文件重写为空。问题是我总是得到'默认字符串'在setInterval中,只有在浏览器中打开txt文件时,HTML2文件中的ajax才会返回一个空字符串。这是正常行为还是我遗漏了什么
要插入的HTML文件'默认字符串' https://jsfiddle.net/fc6n07uz/1/
$('button').on('click', function() {
console.log('you clicked');
$.ajax({
url: 'write_to_file.php',
type: 'POST',
data: {insertValue: 'default string'},
})
.done(function() {
console.log("success");
})
.fail(function() {
console.log("error");
})
.always(function() {
console.log("complete");
});
});
读取的HTML文件以及字符串是'默认字符串' emptyp< txt文件 https://jsfiddle.net/ewtjy66b/1/
setInterval(function(){
$.ajax({
url: 'textfile.txt',
type: 'GET',
dataType: 'text'
})
.done(function(data) {
if(data === 'default string') {
console.log("I got the default string");
$.ajax({
url: 'write_to_file.php',
type: 'POST',
data: {insertValue: ''},
});
}
})
.fail(function() {
console.log("error");
});
}, 1500);
将文本插入到txt文件的PHP文件(请记住,txt文件不是由PHP创建的,我是在本地创建的) https://jsfiddle.net/c91jumuw/
<?php
$insertValue = $_POST['insertValue'];
$myfile = fopen("textfile.txt", "w+") or die("error!");
fwrite($myfile, $insertValue);
fclose($myfile);
?>
那么,为什么我总是从HTML2获取控制台日志(console.log(&#34;我得到了默认字符串&#34;);)即使我重置了txt文件的值。我知道我重置它是因为我在浏览器中刷新txt文档并且它是空的,那时我停止获取console.log
答案 0 :(得分:0)
将setinterval函数放在按钮单击功能
中 像这样: $(document).ready(function(){
$('button').on('click', function() {
console.log('you clicked');
$.ajax({
url: 'write_to_file.php',
type: 'POST',
data: {insertValue: 'default string'},
})
.done(function() {
console.log("success");
})
.fail(function() {
console.log("error");
})
.always(function() {
console.log("complete");
});
setInterval(function(){
$.ajax({
url: 'textfile.txt',
type: 'GET',
dataType: 'text'
})
.done(function(data) {
if(data === 'default string') {
console.log("I got the default string");
$.ajax({
url: 'write_to_file.php',
type: 'POST',
data: {insertValue: ''},
});
}
})
.fail(function() {
console.log("error");
});
}, 1500);
});
});
使用上面的代码
替换整个jquery代码我已经测试过它并且工作正常,
希望这会对你有所帮助:)。