我在尝试实现jQuery循环函数(.each)的延迟时遇到了麻烦 问题是:我有一个包含多列的行列表,用户需要输入他的数据 现在,当用户单击按钮保存时,需要逐个检索所有行,并将其数据插入数据库中。
第一次获取插入数据并返回最后插入的id。然后在第二个$ .get中,最后插入的id用作历史记录条目。
下面的代码可以正常工作,唯一的问题是整个过程在嵌套的$ .get开始之前完成。因此,第二个$ .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);
});
答案 0 :(得分:0)
对于你的第二个$ .get,你需要在第一个get的数据结果中包含第二个$ .get需要的所有值,而不是使用你在第一次获取之前计算的值。这样,您可以保证第二个$ .get的所有数据都与第一个的结果相关。
换句话说,不要在第二个$ .get中使用amount_paid的值,而是在数据中返回任何所需的值以及最后一个插入ID。