jQuery AJAX 调用从 txt 文件中获取错误值
jQuery AJAX call get wrong value from txt file
我在使用 jQuery AJAX 读取服务器上的 txt 文件时遇到问题。基本上,我有 3 个文件,它们都在同一目录中的服务器上(以后不会)。一个 HTML 文件包含一个按钮,当您单击该按钮时,它会启动一个 AJAX 请求,然后将一个字符串(默认字符串)发送到一个 PHP 文件,该文件创建一个 txt 文件。我还有另一个 HTML 文件,它在 1500 毫秒内有一个简单的 setInterval,它得到的是 txt 文件值,如果该值为 === 'default string',它会进行另一个 AJAX 重写调用文本文件为空。问题是我总是在 setInterval 中得到 'default string',并且只有在浏览器中打开 txt 文件时,HTML2 文件 returns 中的 ajax 为空细绳。这是正常行为还是我遗漏了什么
HTML 要插入的文件 'default string'
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 读取的文件,如果字符串是 '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);
PHP 将文本插入 txt 文件的文件(请记住,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("I got the default string");) 获取控制台日志,即使我重置了 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代码,
我已经测试过了并且工作正常,
希望这对您有所帮助:)
我在使用 jQuery AJAX 读取服务器上的 txt 文件时遇到问题。基本上,我有 3 个文件,它们都在同一目录中的服务器上(以后不会)。一个 HTML 文件包含一个按钮,当您单击该按钮时,它会启动一个 AJAX 请求,然后将一个字符串(默认字符串)发送到一个 PHP 文件,该文件创建一个 txt 文件。我还有另一个 HTML 文件,它在 1500 毫秒内有一个简单的 setInterval,它得到的是 txt 文件值,如果该值为 === 'default string',它会进行另一个 AJAX 重写调用文本文件为空。问题是我总是在 setInterval 中得到 'default string',并且只有在浏览器中打开 txt 文件时,HTML2 文件 returns 中的 ajax 为空细绳。这是正常行为还是我遗漏了什么
HTML 要插入的文件 'default string' 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 读取的文件,如果字符串是 '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);
PHP 将文本插入 txt 文件的文件(请记住,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("I got the default string");) 获取控制台日志,即使我重置了 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代码,
我已经测试过了并且工作正常,
希望这对您有所帮助:)