.each中嵌套$ .get

时间:2012-10-16 08:57:56

标签: javascript jquery

我在尝试实现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);

 });

1 个答案:

答案 0 :(得分:0)

对于你的第二个$ .get,你需要在第一个get的数据结果中包含第二个$ .get需要的所有值,而不是使用你在第一次获取之前计算的值。这样,您可以保证第二个$ .get的所有数据都与第一个的结果相关。

换句话说,不要在第二个$ .get中使用amount_paid的值,而是在数据中返回任何所需的值以及最后一个插入ID。