0

我正在尝试POST从使用 YDN-DB 的异步 IndexedDB 调用中获得的对象数组中传递 Jquery 方法中的变量。基本上db.values,返回一个对象数组,其中存储了我想发送到 PHP 脚本的信息。我可以访问ID记录集的 或任何其他字段,例如r[i].id. 唯一的问题是我无法从 POST 方法的内部访问它,因此我可以在 PHP 脚本成功处理DONE记录后删除它。ID

以下是我想要实现的,一切正常,唯一的问题是当我尝试删除已处理的记录时:

var req = db.values('table');
req.done(function(r){
    for(i=0;i<r.length;r++){
        var post = $.post('myscript.php', {'sale[]': $.toJSON(r[i])});
        post.done(function(data){
            if(data == 'ok'){
                db.remove('table',r[i].id);
            }
        });
    }
});

有没有办法做到这一点,并ID使用其数组的位置来删除处理过的记录?

谢谢!

4

1 回答 1

1

问题是回调函数的闭包i为所有迭代捕获相同的变量,所以当回调被调用时,值i已经传递了数组的最后一项。i您可以将代码包装在函数内的循环中,以便为每次迭代创建一个单独的变量:

var req = db.values('table');
req.done(function(r){
  for(i=0;i<r.length;r++){

    (function(i){

      var post = $.post('myscript.php', {'sale[]': $.toJSON(r[i])});
      post.done(function(data){
        if(data == 'ok'){
            db.remove('table',r[i].id);
        }
      });

    })(i);

  }
});
于 2013-10-09T23:53:15.200 回答