2011-11-03 64 views
1

所以,我有一个奇怪的问题。 我正在通过Web应用程序中的JavaScript使用SQLite数据库。 我有一个函数没有被调用的问题。这是我有:SQLite不从JavaScript没有警报发射

var db = window.openDatabase("database", "1.0", "Database", 
     200000); 
db.transaction(functionIUse, errorCB); 

上述代码不起作用。 functionIUse不会被调用。但是,如果我这样做:

var db = window.openDatabase("database", "1.0", "Database", 
     200000); 
alert('db open'); 
db.transaction(functionIUse, errorCB); 

它突然被调用。任何人都可以向我解释这种行为吗?它真的让我感到困惑。 很明显,我也想知道如何使它工作 - 每一次。

谢谢。

+0

我自己发现的一个解决方案是保持JavaScript内联。但是我不能把它放在一个单独的文件中并让它工作吗? – AndersDaniel

回答

1

你的问题确实很奇怪,但我认为它与你的错误回调有关。

为了验证这一点,我创建了以下jsfiddle

var errorCB = function(){ 
    alert("An Error Occured"); 
} 
var functionIUse = function(transaction){ 
    alert('functionIUse Called'); 
} 
var functionIUse2 = function(transaction){ 
    alert('functionIUse2 Called'); 
} 
var db = window.openDatabase("database", "1.0", "Database", 200000); 
alert('Database Has Been Opened'); 
db.transaction(functionIUse, errorCB); 
db.transaction(functionIUse, errorCBThatDoesntExist); 

当你执行这个JavaScript functionIUse被调用,但functionIUse2不,这是唯一不同的是,errorCB存在,但errorCBThatDoesntExists没有。

我可能会推荐的一件事是使用JavaScript框架来帮助与数据库交互,如html5sql.js。通过提供一个框架来处理HTML5 Web数据库的异步特性以及提供更清晰和更定义的回调,它可以使事情变得更简单。

+0

看起来你是对的。这就是我得到的复制粘贴。当我在外部文件中进行呼叫时,我没有发生错误CB。另外html5sql.js会为我节省很多时间和工作。非常感谢。 – AndersDaniel