我有这个奇怪的"语句回调引发异常或错误没有返回false"
它只是一个简单的数据库示例。 我的代码在github上: https://github.com/prantikv/phonegapDBdemo
请阅读代码中的注释,它解释了所有内容。
我怀疑问题出在数据库的ajax回调中。 如果这是真的,我怎么能让ajax回调等待sql-lite / phonegap中的数据?
function formSent(){//fired when form is submited
alert("formSent called");
db.transaction(queryDB, errorTrans);
return false;
}
function errorTrans(err){ //error for formsent
alert("formsent "+err.message+"|"+err.code);//error is generated here
}
function createSuccess(){//just alerts on success
alert("DB Created");
}
function populateDB(tx) {//transaction obj is passed. Table Created not populated
alert("populateDB called");
tx.executeSql('CREATE TABLE IF NOT EXISTS myDB (id , data)');
}
function onDeviceReady(){
db= window.openDatabase("Database", "1.0", "Display Name", 4*1024*1024);
db.transaction(populateDB, createERR, createSuccess);
}
function createERR(err){//error for create
alert("Create "+err.message);
}
AM我应该为每个数据库回调添加return false.if yes然后返回哪个布尔值?
phonegap doc示例没有http://docs.phonegap.com/en/2.2.0/cordova_storage_storage.md.html#Database
答案 0 :(得分:4)
错误消息通常不是因为SQL,而是在执行回调时发生的异常。所以你最有可能发生JS错误。
我找到了
tx.executeSql('INSERT INTO myDB VALUES (?,?)', [username,email], insertSuccess, errorInsert);
index.js 的 47 行。在 VALUES 之前缺少(id,data)。这会导致下一个SQL调用
tx.executeSql('SELECT * FROM myDB', [], querySuccess, errorSelect);
失败。修复此问题,然后重试。