1

尝试对 jQuery 循环函数 (.each) 实现延迟时遇到问题。
问题是:我有一个包含多列的行列表,用户需要在其中输入他的数据。
现在,当用户单击按钮保存时,需要一一检索所有行并将其数据插入数据库。

第一个 get 插入数据并返回最后插入的 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);

 });
4

1 回答 1

0

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

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

于 2012-10-16T09:03:36.723 回答