我正在使用Phonegap / Cordova为Android构建一个应用程序,它使用设备日历。我编写了一个插件("Calify"),它将事件添加到设备日历中,运行良好。不过,我正在尝试将插件返回的设备日历事件ID添加到Web-SQL数据库中的记录中,但这会导致以下错误(在Android模拟器中运行):
file:///android_asset/www/cordova-2.2.0.js: Line 1090 : processMessage failed: Message: S01 Calify507282772 s[{"id":191,"calid":615}]
file:///android_asset/www/cordova-2.2.0.js: Line 1091 : processMessage failed: Error: Error: INVALID_STATE_ERR: DOM Exception 11下面是我的代码。
window.addEvent(function(insertions){
data = JSON.parse(insertions);
console.log(insertions);
event_id = data[0]['calid'];
id = data[0]['id'];
tx.executeSql('UPDATE AFSPRAKEN SET eventID=? WHERE id=' + id, [event_id]);
}, [calendarID, [{start: start.getTime(), end: end.getTime(), title: event_title}]]);“插入”日志为我提供了所需的结果,并分别记录了“event_id”和“id”。它似乎与数据库插入有关(这也是异步的)。请注意,此函数在数据库事务中运行,这是必要的,因为我还在此日历事件函数之外运行其他一些查询。注释掉insert查询使代码运行时没有错误。
DOM异常11似乎是指对象(我猜是“插入”吗?)不再是可访问的,也许这与此有关。
发布于 2013-11-09 18:11:40
我认为我现在犯的错误是相当明显的,所以对于通过Google发现这个问题的每个人(错误信息并没有真正指向正确的方向),下面是我的代码给出错误的原因:
数据库事务是异步的,以及Phonegap插件。Phonegap函数在数据库事务之外强制执行,使得无法在该事务中运行数据库查询。可以通过以下几种方式解决这一问题:
https://stackoverflow.com/questions/19357088
复制相似问题