0

我正在使用 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 响应而不是(可能)过早中止?

4

0 回答 0