【问题标题】:WebSQL inserts row twice?WebSQL两次插入行?
【发布时间】: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


【解决方案1】:

在 insertDB 方法的第一行添加一些日志,并检查它是否记录了两次消息,或者如果它只记录一次,那么您必须在其他地方有另一个插入语句。

【讨论】:

    猜你喜欢
    • 2011-12-19
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    相关资源
    最近更新 更多