我有一个问题使用jQuery AJAX从服务器上的txt文件读取。基本上,我有3个文件,所有文件都位于同一目录中的服务器上(以后将不再介绍)。一个HTML文件包含一个按钮,当您单击它时,它会启动AJAX请求,然后将字符串(默认字符串)发送到创建txt文件的PHP文件。我还有另一个HTML文件,它在1500毫秒内具有一个简单的setInterval,它得到的是txt文件的值,如果该值==='default string',它将进行另一个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文件,如果string为'default string'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(“我获得了默认字符串”);),即使我重置了txt文件的值也是如此。我知道我重置了它,因为我在浏览器中刷新了txt文档,但它是空的,那时我停止获取console.log。
将您的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代码,
我已经测试过了,并且工作正常,
希望这对您有帮助:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句