2010-12-10 83 views
1

我使用jQuery创建了一个iPhone Web应用程序& jQTouch,它使用iPhone中Mobile Safari浏览器的本地SQLite数据库。jQuery的问题openDatabase():变量db未定义

该应用程序运行良好,直到几天前。突然试图初始化数据库时,我得到了以下错误消息:

function openDB() {  
    db = openDatabase(dbName, '1.0', dbName);  
    db.transaction( 
     function(tx) { 
      tx.executeSql( 
       'CREATE TABLE IF NOT EXISTS energy_days ' + 
       ' ... (omitted) ... ;', 
       [], 
       nullDataHandler, 
       function(tx, error){   
        alert('Error (CREATE TABLE): '+error.message+' (Code '+error.code+')'); 
        return true; 
       } 
      ); 
     }, 
     transactionErrorHandler, 
     nullDataHandler 
    );    
} 

当然,可变db是全局定义:试图执行下面的代码发生

TypeError: Result of expression 'db' [undefined] is not an object. 

此错误。

现在,此代码段正在工作。也许这与最新的iOS 4.2更新有关?有了这个更新,整个数据库的行为就变得有点奇怪了(例如,它们在设置中不再可见,直到重新启动整个设备)。

有没有人有一个想法如何解决这个问题?有没有一种替代方法来初始化数据库对象,或者我错过了一些明显的东西?

感谢所有回复,衷心感谢! Roland

回答

0

我想我发现上面的代码的问题。如前所述,它直到升级到iOS 4(并且仍然在Safari中)。现在看来,最新的Safari Mobile的JS语法已经收紧了。

使用从Apple's documentation(包括短名称和显示名称,大小等)剪下来的完整代码,它再次在移动Safari中工作。

干杯!
Roland

+1

是的,更具体地说,我猜你使用db名称而不是db的大小作为第三个参数。 – tomdemuyt 2011-06-04 14:23:02