我正在使用cordova的最新版本(3.5),我想使用WebSQL保存一些数据,但是当我调用database.transaction(query,success,error)时它什么也不做。我的成功方法和错误方法都有alert()来通知错误或成功,但它们都没有触发。
这是我的代码:
function onDeviceReady(){
var db = window.openDatabase("Database", 1, "PhoneGap Demo");
db.transaction(populateDB, errorCB, successCB);
}
function populateDB(tx) {
tx.executeSql('DROP TABLE IF EXISTS DEMO');
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}
function errorCB(err) {
alert("Error processing SQL: "+err.code);
}
function successCB() {
alert("success!");
}
正如我所说,警报框没有显示。可能是什么问题呢? 了解更多 信息:我正在使用 Cordova 3.5 并在 iPhone 模拟器上进行测试。 我用我的笔记本电脑在 Chrome 上执行了代码,似乎可以工作。
最佳答案
环境: Cordova 3.4
设备:模拟器(Nexus 7)
操作系统:Android KitKat 4.4
我刚刚检查了您的代码并在线收到错误“参数数量不足”
var db = window.openDatabase("Database", 1, "PhoneGap Demo");
根据 API 文档,应该有四个参数,我将代码更改为
var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 1000);
并且成功了。最后一个参数是数据库的初始大小(以字节为单位)。
希望上述解决方案也适用于 iPhone。
我使用 console.log() 调用以及alert() 进行调试。
关于javascript - Phonegap/Cordova WebSql 事务未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24673458/