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

我已经测试过了并且工作正常,

希望这对您有所帮助:)