我在谷歌浏览器中使用HTML5SQL.js,但我只收到此错误:
Uncaught TypeError: Cannot read property 'sql' of undefined
请查看我正在使用的此脚本:http://jsfiddle.net/mporras/Cx3x5/
答案 0 :(得分:1)
就像它在the guide on htm5sql.com中所说的那样,有几种方法可以给出html5sql.js sql语句,并且你的错误是由混合了几种不同的方式引起的。
就像他的回答中提到的xdazz一样,html5sql.process的第一个参数可以只是一个带有一个或多个sql语句的字符串。您还可以传入一个sql语句字符串或sql语句对象的数组。使用sql语句对象的优点是可以定义数据数组并指定单独的成功回调。
基本上你可以这样做:
$(function() {
html5sql.openDatabase("demo", "Demo Database", 5 * 1024 * 1024);
html5sql.process(
[
"DROP TABLE IF EXISTS speedtest;",
"CREATE TABLE speedtest (id INTEGER PRIMARY KEY, label TEXT);",
{
sql: "INSERT INTO speedtest VALUES (?, ?);",
data: [1,'1'],
success: function(transaction, results) {
console.info('Success Inserting First Record');
}
},
{
sql: "INSERT INTO speedtest VALUES (?, ?);",
data: [2,'2'],
success: function(transaction, results) {
console.info('Success Inserting Second Record');
}
}
],
function() {
console.log("Final Sucess Callback");
},
function(error, failingQuery) {
console.error("Error: " + error.message);
}
);
});
可以找到in this jsfiddle
的演示答案 1 :(得分:0)
html5sql.process
函数签名为html5sql.process(SQL, finalSuccessCallback, errorCallback)
,请尝试以下方式,此处为demo。
$(function() {
html5sql.openDatabase("demo", "Demo Database", 5 * 1024 * 1024);
var st = "DROP TABLE IF EXISTS speedtest; CREATE TABLE speedtest (id INTEGER PRIMARY KEY, label TEXT); INSERT INTO speedtest VALUES (1, '1');INSERT INTO speedtest VALUES (2, '2');";
html5sql.process(
st,
function(transaction, results) {
console.info('Success');
},
function(error, failingQuery) {
console.error("Error: " + error.message);
});
});