Phonegap WebSql数据库表创建失败

时间:2015-01-08 13:26:54

标签: html5 cordova web-sql

当在iPad下执行Phonegap app的示例代码时,会创建表以及插入记录。但是一旦它使用" window.location =' main.html'"导航到下一页。表格消失/删除。一段时间它正常工作,所有记录都显示在main.html上。示例代码:

db.transaction(function (transaction) {
  transaction.executeSql('drop table if exists categoryType', null, function () {
         transaction.executeSql('create table if not exists categoryType(id text primary key, code text, name text)', null, function () {
               for (var i = 0; i < category_types.length; i++) 
               {
                     var insert_count = 0;
                      transaction.executeSql('insert into categoryType(id, code, name)  values(?,?,?)', [category_types[i].id, category_types[i].code , category_types[i].name],
                      function()
                      {
                          insert_count++;
                          if ( insert_count == category_types.length)
                             window.location = "main.html";
                      });
               }
           });
   });
});

如果我们在导航到main.html页面问题之前在上面的代码中添加了超时,那么问题就解决了。 带超时的示例代码:

db.transaction(function (transaction) {
  transaction.executeSql('drop table if exists categoryType', null, function () {
         transaction.executeSql('create table if not exists categoryType(id text primary key, code text, name text)', null, function () {
               for (var i = 0; i < category_types.length; i++) 
               {
                      var insert_count = 0;
                      transaction.executeSql('insert into categoryType(id, code, name)  values(?,?,?)', [category_types[i].id, category_types[i].code , category_types[i].name],
                      function()
                      {
                          insert_count++;
                          if ( insert_count == category_types.length)
                          {
                               setTimeout(function() {
                                   window.location = "main.html";
                               }, 5000);
                          }
                      });
                }
           });
   });

});

我可以使用超时成功运行代码,但我不想依赖任意超时时间。早些时候,相同的代码工作正常,但现在它最近引起了问题。有没有解决方案??

0 个答案:

没有答案