我正在制作一个使用webSQL的JS对象,其api就像localStorage一样。我的方法getItem()
无效。
myObject.setItem()
方法工作得很好(我可以看到Dev Tools中的行)......
localStorage.setItem("key5","val6",function (result) {
console.log(result); // success!
});
我的方法myObject.getItem()
只返回0只受影响的行...
localStorage.getItem("key5",function (tx,result) {
console.log(result); // returns 0 affectedRows
});
Click here for my fiddle或......
var dbConfig = {
"name" : "DB",
"displayName" : "db1",
"version" : "1.0",
"size" : 200000
};
var webSql = function () {
var db = window.openDatabase(dbConfig.name, dbConfig.version, dbConfig.displayName, dbConfig.size);
console.log("Opening database: " + JSON.stringify(dbConfig));
init();
function init () {
db.transaction(function(tx){
var sql = 'CREATE TABLE IF NOT EXISTS storage (key, value)';
tx.executeSql(sql);
},errorCB,successCB);
}
function errorCB(err) {
alert("Error processing SQL: " + JSON.stringify(err));
}
function successCB() {
console.log("success!");
}
//private
return {
getItem: function (key, callBack) {
db.transaction(function (tx) {
var sql = 'SELECT * FROM storage WHERE key=?';
tx.executeSql(sql, [key], function (tx,result) {
callBack(tx,result);
}, errorCB);
},errorCB);
},
setItem: function (key, value, callBack) {
db.transaction(function (tx) {
var sql = 'INSERT INTO storage (key,value) VALUES ("'+key+'","'+value+'")';
console.log('SET SQL: ' + sql);
tx.executeSql(sql, [], function (tx,result) {
console.log('test: ' + result);
callBack(tx,result);
}, errorCB);
},errorCB);
}
};
}();
var localStorage = webSql;
localStorage.setItem("key5","val6",function (result) {
console.log(result);
});
有什么想法吗?感谢。
答案 0 :(得分:0)
我发现这是一个浏览器兼容性问题。 Chrome for Linux存在问题,但现在我正在使用Chrome for Windows,我的同一个小提琴工作正常。