jQueryループ関数(.each)に遅延を実装しようとすると問題が発生します。
問題は次のとおりです。ユーザーがデータを入力する必要がある、複数の列を持つ行のリストがあります。
これで、ユーザーが[保存]ボタンをクリックすると、すべての行を1つずつ取得し、それらのデータをデータベースに挿入する必要があります。
最初のgetはデータを挿入し、最後に挿入されたIDを返します。次に、2番目の$ .getで、最後に挿入されたIDが履歴エントリとして使用されます。
以下のコードは正常に機能します。唯一の問題は、ネストされた$.getが開始する前にプロシージャ全体が終了していることです。したがって、2番目の$.getによって挿入されるすべてのデータは同じです。
関数getIdNumberは、IDから不要な文字を削除します(例:row_1から1)
$('.data_row').each(function(i){
id = getIdNumber(this.id);
setTimeout(function() {
date = $('#dat_'+id).val();
customer = $('#cus_'+id).val();
amount_paid = $('#amt_'+id).val();
remarks = $('#rem_'+id).val();
account = $('#acc_'+id).val();
url = "bin/_receipts.php?addreceipts=&date="+date+"&customer="+customer+"&amountpaid="+amount_paid+"&remarks="+remarks+"&paidaccount=" + account;
$.get(url, function(d){
url2 = "bin/_ledgerHandler.php?addaudittrail=&user="+escape("<? echo $_SESSION["user_id"]; ?>")+"&trantype="+escape("Receipt - "+d+"")+"&val="+escape(amount_paid)+"&category=receipts";
$.get(url2, function(){
});
});
}, 1000*i);
});