我用jQuery & jQTouch创建了一个iPhone Web App,它利用了iPhone中Mobile Safari浏览器的本地SQLite数据库。
直到几天前,这个应用程序运行得很好。当我尝试初始化数据库时,突然收到以下错误消息:
TypeError: Result of expression 'db' [undefined] is not an object.尝试执行以下代码时发生此错误:
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是全局定义的。
现在,这个代码段可以工作了。也许这与最新的iOS 4.2更新有关?有了这个更新,整个数据库的行为变得有点奇怪(例如,它们在设置中不再可见,直到你重启整个设备)。
有谁知道怎么解决这个问题吗?有没有另一种初始化数据库对象的方法,或者我是否遗漏了一些显而易见的东西?
感谢所有的回复,他们是真诚的感谢!罗兰
发布于 2011-01-25 16:29:48
我想我找到了上面代码的问题所在。如前所述,它在升级到iOS 4之前一直有效(在Safari4中仍然有效)。现在看来,最新的Safari Mobile的JS语法已经收紧了。
使用从Apple's documentation中截取的完整代码(包括简短和显示名称、大小等)它再次在Mobile Safari中工作。
干杯!
罗兰
https://stackoverflow.com/questions/4407866
复制相似问题