【发布时间】:2015-10-10 10:29:02
【问题描述】:
我有直接插入查询
db.transaction(insertIDB, errorCB);
function insertIDB(tx) {
//do some task if else cases to get data
var sql = 'INSERT INTO data (date, location, ...) VALUES (?, ?, ...)';
tx.executeSql(sql, [_date, _location, ...], successDB, errorDB);
}
function successDB(transaction, results) {
//navigate result page
}
function errorDB(transaction, results) {
//print error
}
不知何故,它最终插入了两次相同的数据。以前有人遇到过这个问题。我什至在成功插入后导航之前尝试过 setTimeout。时间戳相同,可能只有毫秒差异。任何解决此问题的想法将不胜感激。
【问题讨论】:
-
如果代码两次插入行,那么它被调用两次。一个
insert(单行)不会插入多行,除非您有一个执行非常不寻常的触发器。 -
好的,我已经检查了代码。我有表单提交和按钮点击事件,也许这是他们都调用的问题,我点击按钮并添加两次?
-
不,看来我已禁用此代码。还有什么可能会调用函数两次?
-
我读到有异步和同步 websql 操作。这会导致这个问题吗?
-
。 .在插入之前放置一个审计语句,看看这段代码是否被调用了两次。您可能在其他地方调用了代码;或者这个函数可能会被调用两次。
标签: jquery sql cordova jquery-mobile web-sql