我正在尝试使用 Javascript 或 JQuery 在 textArea 中打印报告,因为我想向用户展示 PHP 脚本在后台处理一段时间时发生的事情,因此用户不会认为应用程序挂起。
因此,我尝试使用 setTimeout(...) 自动更新 textArea,并通过 PHP 脚本在会话中设置报告值,同时在客户端获取该变量并将其打印在 textArea 中。
这是我使用的代码:
/*
* The client side javascript function that updates the textArea value.
*/
function updateReport() {
var reportValue = '<?php echo( $_SESSION[ 'report' ] ); ?>';
document.forms[ 'start_send_form' ].elements[ 'reportTextArea' ].value = reportValue;
setTimeout(function () {
updateReport();
}, 500);
}
客户端通过 Ajax(JQuery) 请求调用的 php 脚本:
<?php
$report = "";
for( $i = 0; $i < $number_of_items_to_process; $i++ ) {
$report .= "- Processing a new item";
$_SESSION[ 'report' ] = $report;
// .... Process some long code here.
}
?>
但似乎 updateReport() 在第一次调用时只执行一次,然后在 PHP 脚本完成后恢复。
你能为我解释一下吗?
有没有办法完成我想要的?
---------------------------------- >>更新:我用来获取 $ 更新值的代码_SESSION['report'] 来自服务器端:
// 1. JavaScript :
function updateReport() {
$.ajax({
url: "test2.php",
type: "POST",
cache: false,
success: function( returned_value ){
var reportValue = $.trim( returned_value );
alert(reportValue); // All messages appear after PHP script ends.
}
});
setTimeout(function () {
updateReport();
}, 500);
}
// 2. test2.php(Script just made to get $_SESSION[ 'report' ]) :
<?php
if ( !isset( $_SESSION ) ) session_start();
echo( $_SESSION[ 'report' ] );
?>