如何在将新信息写入其中时使用PHP动态读取文件

时间:2015-01-08 18:02:58

标签: javascript php jquery html

我有一个代码设置,我使用JS和PHP写入文件并将输出显示为html元素(在本例中为textarea)。关于如何解决这个问题我有一个很大的问题。我知道PHP在其他任何事情发生之前执行。我使用php来使用我自己的javascript函数回显文件内容

output(string) // this outputs whatever into the html element text area

PHP:

<?php echo "output('".$someText."');"; ?>

现在我的问题出现了,当我更新并向该文件添加内容时,但是php已经执行并尝试再次从文件中读取,只会显示上次执行php时的结果。解决这个问题的唯一方法是刷新页面,从而“重建”文件的html内容。

我的整个代码模仿命令行的外观(你有一个带输入框的输出屏幕)当新内容被添加到文件时,我如何动态显示文件的内容而不必刷新窗口。刷新窗口将起作用,但根本不是我需要的工作。对此有何帮助?

有关我的代码结构的详细信息,请在下面找到代码执行方式的片段:

// main.php
<?php
    // displays the file into the output box
    function displayFile($fileName){
        $file_handler = fopen($fileName, "r");
        while (!feof($file_handler)){
            $line = fgets($file_handler);
            $line = formatFileLine($line);
            echo "output('".$line."');";
        }

        fclose($file_handler);
    }
?>

switch(splitCmd[1]){
    case 'permitted':
        output('\nWells that have been permitted:\n');
        <?php displayFile('permitted.txt'); ?> //calls the php function to display content.
        break;
    case 'drilled':
        output('\nWells that have been drilled:\n');
        <?php displayFile('drilled.txt'); ?>
        break;
    default:
        output('Wrong syntax: show <permitted, drilled>');
}

2 个答案:

答案 0 :(得分:0)

您可以使用AJAX请求执行此操作,有多种方法可以执行此操作,但最简单的方法是使用jQuery(基于观点的意见!),这里是文档的链接。 jQuery AJAX

示例:

function ajaxCall(){

$.ajax({ url: 'PHPFILE.php',
        success: function(e){

            //e is what you get returned from the php file
            $('#div').html(e);
        }
    });
}

哦,你应该将jquery库链接起来。你这样做的方式:

<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>

答案 1 :(得分:0)

您需要对PHP文件进行AJAX调用。从PHP脚本中获取输出,然后将其嵌入到页面上的给定div中。

让我们假装你有一个div用于展示。让我们随时给你一个按钮来刷新它。

<div id="resultdiv"></div>
<input type = "button" id="rbutton" value="Click to Refresh">

任何你喜欢的方式。

现在,让我们设置一个AJAX调用来加载PHP的结果。

<script type="text/javascript">

    $(function() {  //document ready psuedonym

       function refreshdata(){

$.ajax({
        type: "POST",
        url: "my_data_script.php",
        dataType: 'html',
        data: {myparam1: 'abc', myparam2: '123'},  //these are optional parameters in case your PHP script needs them

    success: function(data){
        $('#resultdiv').html(data);
        },

        error: function(){
        },

        complete: function(){
        }
    }); //end ajax  

       }  //end function 

    $("#rbutton").click(function() {  //clicking the button refreshes the data on demand
        refreshdata();
    });

       refreshdata();  //this will run the function when the page loads


    });//end document ready pseudonym
</script>