我正在使用index.php
<script type="text/javascript">
$(function(){
$("#progressbar").progressbar({
value: 0
});
function load() {
$.ajax({
url: './ajax.php?status='+$( "#progressbar" ).progressbar( "value" ),
success: function(data) {
ajax = eval('(' + data + ')');
if(ajax!=false) {
$("#progressbar").progressbar({
value: ajax.status
});
$("#message").html( ajax.message );
if(ajax.status!=100) {
load();
}
}
}
});
}
load();
});
</script>
<div id="message"></div>
用于基于ajax的实时进度信息。这适用于ajax.php:
<?php
$php_array['status'] = rand(0,99);
if($php_array['status']>100) {
$php_array['status'] = 100;
}
if($php_array['status'] != 100) {
$php_array['message'] = 'Aktueller Status <b>'.$php_array['status'].'%</b> von 100%, Differenz: '.(100-$php_array['status']);
} else {
$php_array['message'] = 'Juhu endlich geschafft!';
}
// Ausgabe des PHP Arrays als JSON Objekt
echo json_encode($php_array);
?>
在index.php中显示0到99之间的随机数,因此可以正常工作。
我将ajax.php修改为
<?php
//modified - start
$zahl = 0;
$menge = 0;
if ($handle = opendir('folder'))
{
while (false !== ($entry = readdir($handle)))
{
if (strpos($entry,$_GET['session_id']) !== false)
{
if (strpos($entry,'result') !== false)
{
}
else
{
$zahl += (int)file_get_contents('folder/'.$entry);
$menge++;
}
}
}
closedir($handle);
}
if((int)($zahl/$menge) != 0.0)
{
$php_array['status'] = (int)($zahl/$menge);
}
else
{
$php_array['status'] = 0;
}
//modified - end
if($php_array['status']>100) {
$php_array['status'] = 100;
}
if($php_array['status'] != 100) {
$php_array['message'] = 'Aktueller Status <b>'.$php_array['status'].'%</b> von 100%, Differenz: '.(100-$php_array['status']);
} else {
$php_array['message'] = 'Juhu endlich geschafft! <img src="http://d4nza.de/blog/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley"> ';
}
echo json_encode($php_array);
?>
opendir-part遍历所有输出文本文件,其中只包含0到100之间的数字。目标是查找平均进度。然后在
(int)($zahl/$menge)
它被转换为整数并通过json转发到index.php。
这有时会起作用。这意味着,在index.php上,有时我会看到进度,有时候我没有。
如何使index.php中的代码等待ajax.php响应而不是(可能)过早中止?