Php jQuery AJAX调用从txt文件获取错误值

Php jQuery AJAX调用从txt文件获取错误值,php,jquery,ajax,post,readfile,Php,Jquery,Ajax,Post,Readfile,我在使用jQuery AJAX读取服务器上的txt文件时遇到了一个问题。基本上,我有3个文件,它们都在同一个目录下的服务器上(以后不会出现)。一个HTML文件包含一个按钮,当您单击该按钮时,它将启动一个AJAX请求,然后该请求将一个字符串(默认字符串)发送到一个PHP文件,该文件将创建一个txt文件。我还有另一个HTML文件,它有一个1500毫秒的简单设置间隔,它得到的是txt文件的值,如果这个值是==='defaultstring',它会进行另一个AJAX调用,将文本文件重写为空。问题是,我总

我在使用jQuery AJAX读取服务器上的txt文件时遇到了一个问题。基本上,我有3个文件,它们都在同一个目录下的服务器上(以后不会出现)。一个HTML文件包含一个按钮,当您单击该按钮时,它将启动一个AJAX请求,然后该请求将一个字符串(默认字符串)发送到一个PHP文件,该文件将创建一个txt文件。我还有另一个HTML文件,它有一个1500毫秒的简单设置间隔,它得到的是txt文件的值,如果这个值是==='defaultstring',它会进行另一个AJAX调用,将文本文件重写为空。问题是,我总是在setInterval中获取“默认字符串”,并且只有在浏览器中打开txt文件时,HTML2文件中的ajax才会返回空字符串。这是正常的行为还是我遗漏了什么

要插入“默认字符串”的HTML文件

HTML文件,如果字符串为“默认字符串”,则清空txt文件

将文本插入txt文件的PHP文件(请记住,txt文件不是由PHP创建的,我是在本地创建的)



那么,为什么我总是从HTML2(console.log(“我得到了默认字符串”);)获取控制台日志,即使我重置了txt文件的值。我知道我重置了它,因为我在浏览器中刷新了txt文档,但它是空的,并且当时我停止获取控制台。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代码,

我已经测试过了,效果很好


希望这对您有所帮助:)

将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代码,

我已经测试过了,效果很好

希望这对您有所帮助:)

<?php

$insertValue = $_POST['insertValue'];
$myfile = fopen("textfile.txt", "w+") or die("error!");
fwrite($myfile, $insertValue);
fclose($myfile);

?>
     $(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);


                });
            });