ajax ポストの受信者が次のように動作する場合:
// process/te_bulk.php
$jsonList = '[{"AV"},{"QT"}]';
echo $jsonList;
sleep ( 5 ) // or, continue curl request for jsonList variable 1
$jsonArray = '[{"1","15","JOG"},{"2","20","RUN"}]';
echo $jsonArray;
sleep ( 4 ) // or, continue curl request for jsonList variable 2
$jsonArray = '[{"1","25","SWIM"},{"2","30","BIKE"}]';
echo $jsonArray;
最初の試行 - XHR の読み込みが 5 秒間遅延し、両方の文字列が同時に追加され、結果として「無効な JSON」が発生します。
$.ajax({
type: "POST",
url: "process/te_bulk.php",
contentType: "application/json; charset=utf-8",
data: { user: "12345" }
}).success(function( msg ) {
var string = jQuery.parseJSON(msg);
alert( "Data Returned: "+string );
});
.post() または .ajax() は各エコーに個別に応答できますか? ページ process/te_bulk.php をブラウザーにロードすると、5 秒と 4 秒の遅延が発生します。つまり、te_bulk.php が処理を終了したときにすべてのデータを受け取るのではなく、データが利用可能になったときにページにデータを追加する方法です。
2 つの .ajax() 関数を用意します。1 つは最初の文字列を受け取り、必要に応じて $jsonArray データに対して 2 番目の関数を処理して呼び出します。
これが不可能な場合、取得したデータの「進行状況」インジケータを表示する別の簡単な方法はありますか?