2016-05-18 4 views
0

ここでは少し問題です。PHPとAJAX:処理中のエコー

私はAJAXを経由してと呼ばれ、このようになりますされ、PHPの関数があります:私は「の生ログ」エコーを取得しようとしている

function processActiveDirectory(){ 
    $var = new GetLDAPUsers; 

    echo "Getting Users from Active Directory.... <br />";   

    $adusers = $var->getAllUsers(); 
    echo "setting up images.... <br />"; 
    // processing more stuff 
    echo "finished"; 
} 

を。すべてのステップの前に、エコーはログエリアに出力されるはずです。したがって、ユーザーは何が起こっているのか知っています。

しかし、問題は、プロセス中にログが表示されず、プロセスの最後にテキスト全体が塗りつぶされるということです。それ以外はうまく動作します。ログは実行時に表示されませんが、機能が終了すると、正しい位置に表示されます。

私のAJAX呼び出し:

jQuery(document).ready(function($) { 
    $('#lii-form').submit(function() { 
     data = { 
      action: 'lii_map_images' 
     }; 

     $.post(ajaxurl, data, function(response){ 
      $('#lii_log').html(response); 
     }); 
     return false; 
    }); 
}); 

これは、それがビルドだ方法です。

Ajax and PHP File

編集

私はすでにAJAX呼び出しを使用しています。この thread以外で

、関数を呼び出す。これは、理由は、企業のrestrictmentsの、

...私はものをエコーてると呼ばれる関数内で編集2

私は

申し訳ありませんが、私はより多くの情報を提供することはできませんワードプレスを使用しています。

+1

クロスドメインですか? – Raptor

+0

それはすべて同じドメインにあります – Zanidd

+2

[PHPの長いスクリプトの進捗状況を表示](0120-18753)を参照してください。 – Thamilan

答えて

2

これはあなたの必要性についての短い見解です。このアイデアをさらに発展させてください。

スクリプト:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> 
<script type="text/javascript"> 
    //Start the main process 
    $.ajax({ 
     url: 'main.php', 
     success: function(data) { 
     } 
    }); 

    function getProgress(){ 
     $.ajax({ 
      url: 'progress.php', 
      success: function(data) { 
       $("#progress").html(data); 
       if(data != "finished"){ 
        getProgress(); 
       } 
      } 
     }); 
    } 

    //Start the progress section 
    getProgress(); 
</script> 
<div id="progress"></div> 

main.php

<?php 
$arr = ['Getting Users from Active Directory....','setting up images....','finished']; 
foreach($arr as $value) { 
    session_start(); 
    $_SESSION["progress"]=$value; 
    session_write_close(); 
    sleep(1); 
} 

進歩進歩のための主要なプロセス用とその他 -

これは、二つのAJAX呼び出しを使用しています。 PHP

<?php 
session_start(); 
sleep(1); 
echo $_SESSION["progress"]; 

だからあなたprocessActiveDirectoryMain.phpの下に来るとエコーがSESSION変数

+0

このような? $ adusers = $ var-> getAllUsers(); $ _SESSION ["progress"] = "画像の設定....
"; – Zanidd

+1

@ザニディはい、すべての進捗状況更新のセッションを開始して書き留めておいてください。 (複数の開始と終了の代替手段を見つけようとしています) – Thamilan

+0

ok私はこれを試してみよう – Zanidd

0

に置き換える必要があります私はAJAX WITH LOGプロセスのようなものでは必要がないと思います。 AJAXは重すぎて、あなたが望むならそれは悪いデザインかもしれません。ウェブソケットを使用するか、まったく使用しない方が良い