これは、最初にファイルリストを取得する関数です。各ファイルに対して、 ajax 関数を呼び出して何かを実行します。
function getImagesList(folder) {
$.ajax({
type:"POST",
url: "getImgList.php",
data: {"data":folder},
dataType: "json",
success: function (data) {
var IsfirstLoggingItem = "true";
for (var key in data) {
//alert (data[key]);
pdfToImgExec (data[key],IsfirstLoggingItem,folder,1);
$('#pdfToImgResult').append('<p>Processing ' + data[key] + ' <img src="loading.gif" height="20" width="20"/></p>');
IsfirstLoggingItem = "false";
}
folder == 'Incoming' ? getImagesList('result') : pdfToImgResult();
},
error: function(x, t, m) {
$('#pdfToImgResult').html('<p>Error</p>');
alert (t);
releaseBtn();
}
});
}
これは呼び出し先関数で、何かを実行するための ajax 関数が含まれています
function pdfToImgExec(file,IsfirstLogging,folder,round){
var postString = file + '&' + IsfirstLogging + '&' + folder;
$.ajax({
type: "POST",
url: "pdfToImgExec.php",
data: {"data":postString},
dataType: "html",
success: function (data) {
if (data) {
$('#pdfToImgResult').html('').append('<p>Finish processing ' + file + '</p>');
} else if (!data && round < 4) {
$('#pdfToImgResult').html('').append('<p>Encounter error in processing ' + file + ' , retrying ' + round + ' round </p>');
round++;
pdfToImgExec(file,IsfirstLogging,folder,round);
}
},
error: function(x, t, m) {
$('#pdfToImgResult').html('errpr');
alert (t);
releaseBtn();
}
});
}
つまり、getImagesList 関数はファイル リストを取得し、ファイルごとに pdfToImgExec 関数を呼び出して ajax スタッフを実行します。問題は、ajax スタッフが終了するのを待たずに、次のループを開始することです。
つまり、たとえば file1 を実行する ajax スタッフ => file1 を終了する ajax スタッフ => file2 を実行する ajax スタッフ => file2 終了 => 結果を確認したい
ただ、現状は file1 running ajax staff => file2 running ajax staff => チェック結果 => file1 終了 / file2 終了
両方の関数で async:false、cache :false を試しましたが、解決しないようです。どうすれば修正できますか? ありがとう