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

时间:2015-11-20 09:29:25

标签: php jquery ajax post readfile

我有一个使用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

1 个答案:

答案 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代码

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

希望这会对你有所帮助:)。