我有一个代码设置,我使用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>');
}
答案 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>