1

PHPスクリプトが実行していることのテキストベースの説明を画面に表示したいと思っています。たとえば、関数をトリガーすると、PHPスクリプトが開始されます。次に、ユーザーには「ステップ1が開始されました」と表示され、数秒後に「ステップ2が開始されました」と表示されます。何百ものステップが存在する可能性があり、ユーザーに何が起こっているのかを見てもらいたいと思います。

私のjQuery:

$(document).ready(function() {
    $('#start').click(function() {
        $.ajax({
          url: "do.php",
          success: function( html ) {
              $("#results").append(html);
              return false;
          }
        });
    });
}); 

そして私のPHP(問題を説明するために、私の実際のコードは多くの仕事をします):

echo "step 1 done";
sleep(2);
echo "step 2 done";
sleep(2);
echo "step 3 done";

現時点では、「結果」divは、4秒後に「ステップ1完了ステップ2完了ステップ3完了」を一度に表示します。「ステップ1完了」、2秒後に「ステップ2完了」、さらに2秒後に「ステップ3完了」を表示したいと思います。

4

2 に答える 2

2

これはAJAXの仕組みではありません。あなたはPHPコードでスリープ状態にあり、JavaScriptはスリープ状態の間応答を待つだけです。応答を受け取るとすぐに、関数を実行してHTMLを更新します。

ページのHTMLの更新を一時停止する場合は、JSONなどを使用してPHPページからの応答を個別の要素として送信し、JavaScriptで繰り返す必要があります。setTimeout次に、PHPページから返されたデータの表示を一時停止するために使用できます。

于 2012-10-31T00:10:12.650 に答える
2

Ajaxの非同期性のため、異なるphpファイルのステップを分離し、コールバック$.ajax内で複数のリクエストを行う必要があります。さらに良いのは、 deferredを使用することです。success

于 2012-10-31T00:12:01.090 に答える