私のphpホームページには、約10から60のフィールドを持つフォームがあります。「process.php」ページに送信すると、各フィールドが1つずつ処理され、結果が出力されます。しかし、これは結果を全体として出力します。私がやりたいことは、ajaxを使用してデータを送信し、出力を1つずつ収集して、ユーザーに1つずつ表示することです。
jquery get、post、および ajax メソッドを読みました。しかし、phpページから出力を1つずつエコーし、それぞれがajaxによって収集され、ユーザーに1つずつ表示されるようにするにはどうすればよいですか?
ajax呼び出しを1つずつ実行できることを知っています(1つのフィールドを送信して応答を取得し、それをユーザーに表示して次のフィールドを送信するなど)。しかし、私はそのようにしたくありません。ワンクリックですべてのフィールドを送信し、出力を 1 つずつ表示したいと考えています。
この process.php は API を使用します (curl を使用)。そのため、数秒の遅延がかかる場合があります。
出来ますか ?
詳細:
$fields = $_POST['flds'];
foreach($fields as $f)
{
// do cURL operation - API
// print output
}
したがって、出力は次のようになります。
output of field1
.....
output of field2
.....
output of field3
.....
etc..
つまり、最初に次のように表示されます。
output of field1
数秒後:
output of field1
output of field2
そしてこうなります。1つのフィールドを送信して出力を取得し、次に2番目のフィールドを送信してから出力するなどしたくありませんが、フィールド全体を送信して出力を1つずつ取得したいです。
出来ますか ?
テストのために試したこと:
<?php
@apache_setenv('no-gzip', 1);
@ini_set('zlib.output_compression', 0);
$i = 10;
while($i>0)
{
echo $i . '<br />';
flush();
sleep(1);
$i--;
}
?>
しかし、機能していません。ページは数秒間ロードされているように見え、最終的に数字全体を出力します。
この質問をする理由は、この API は 1 回の実行に 4 ~ 11 秒以上かかるからです。したがって、50 フィールドを超えると、約 10 分かかります。スクリプトの最大実行時間を延長しても、ユーザーはその空白の画面でこれだけ待たなければなりません!