这真让我抓狂。
我有一个消息队列,当设备离线并且有互联网连接时它会发送这些消息时,我正在使用本地存储 Web DB 来存储这些消息。在它发送消息后,我希望它们从表中删除。
当我发送消息时,我会保留一个名为 MessageIDs 的数组,这样我就可以引用需要删除的行。
我遍历 MessageID 的长度并获取每个 ID 并进行 DELETE 事务。我的 alert() 获得了正确的值,但是当事务执行时,该值未定义。我尝试将一个已知的“ID”硬编码到事务中并且它起作用了。有什么想法吗?
var MessageIDs = new Array();
//In the block of code not shown I populate MessageIDs and send out messages
for(var j=0; j < MessageIDs.length; j++)
{
alert(MessageIDs[j]); //Pulls the right value
site.data.database.transaction(
function (transaction) {
//[MessageIDs[j]] has a value of undefined and thus doesn't get deleted but the transaction doesn't technically fail either
transaction.executeSql("DELETE FROM Messages WHERE id = ?;", [MessageIDs[j]],
site.contact.removeQueuedMessagesSuccess, site.contact.removeQueuedMessagesError);
}
);
}