0

jqueryとphpの組み合わせに少し問題があります。コードから始めましょう。

PHPコード:

if ($_POST["request"]==10)
    progress();

function progress()
{
    $files = getfiles();
    $progress = 0;
    $progressRate = 100/$files->number;
    for ($i=0;$i<$files->number;$i++)
    {
        sendfile($files->location[$i]);
        $progress+=$progressRate;
        echo $progress;
    }
}

コード出力: たとえば、files->number = 2 の場合、出力は 50 100 になります。

Jqueryコード:

jQuery.post("functions.php",{request:10},function(data){

            alert(data);


   });

問題:私が望むのは、最初に 50 を警告し、次に 100 を警告することです。つまり、最初のループが php で終了し、最初の進行状況の値をエコーするとき、jquery はそれを傍受できるはずですが、jquery はループ全体の後にデータを警告しますこれは、1 つのアラートで 50100 を取得することを意味します。jQuery でこれを処理できる方法はありますか? PHPを使用して、たとえば非表示のdivまたは属性のループ数を生成し、jQuery内でループを使用する他のソリューションがあることは知っていますが、本当に直接やりたいです。

4

2 に答える 2

5

それはAJAXの仕組みではありません。URL に移動するときにブラウザーが行うのと同じように、単一の要求を作成し、その応答に対して "何か" を実行します。

PHP スクリプトはサーバー側で実行され、結果を「画面」に出力し、応答として送り返します。

複数の変数を返す場合は、それらを JSON データとして返し、JavaScript で JSON 文字列を解析する必要があります。

于 2012-08-20T20:45:06.347 に答える
0

jQuery (実際にはデフォルトでは AJAX) は、サーバーが要求を完了すると、応答のみを返します。

そのため、PHP ページへの単一のリクエストを実行して複数のレスポンスを取得する方法はありません。1 つの方法は、アップロードの進行状況をサポートする php を使用することですが、ファイルのアップロード専用であるため、実際にあなたの状況で役立つとは思えません。

于 2012-08-20T20:47:31.293 に答える