听起来您有范围问题passData
。在循环内部,但在定义之前,请var passData = ...
尝试使用匿名函数包装代码块:
(function() {
/* Your code here */
}());
那应该防止passData
泄漏到全局范围内,这似乎就是为什么您的IDB代码仅在最后一个循环中起作用的原因。(passData
每次AJAX响应完成之前都会重新定义。)
:没有循环,您正在处理回调。我看到的情况是,您正在重新定义onsuccess
每个Ajax请求的处理程序(并覆盖除最后一个值之外的所有值),并重用同一事务。尝试将此事务代码移到AJAX请求的成功回调中:
//Get Database
var transaction = db.transaction(["data"], "readonly");
var objectStore = transaction.objectStore("data");
var cursor = objectStore.openCursor();
这将创建一个关闭并delete
在每个响应上提交您的事务。这意味着每个AJAX请求一个事务,每个AJAX请求一个onsuccess
回调(不重新定义)。