在我努力学习更多关于WebSQL的过程中,我遇到了一个" Errorundifined"在我的JavaScript代码中。我已对代码进行了测试,但似乎无法找到错误。但是,数据库" To Do"得到了创造但不是表格#34;任务"。有人可以帮忙!
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script type="text/javascript" src="../js/jquery.js"></script>
<script>
var db = null;
var db = openDatabase('To Do', '1.0', 'To Do', 2 * 1024 * 1024);
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS tasks (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, create unique, name, description, due DATETIME)');
});
$('document').ready(function() {
var db = openDatabase('To Do', '1.0', 'To Do', 2 * 1024 * 1024);
db.transaction(function(tx) {
tx.executeSql('SELECT * FROM tasks', [], querySuccess, errorCB);
});
function querySuccess(tx, results) {
var len = results.rows.length;
if(len > 0) {
}else{
alert("You Have No Tasks");
}
}
function errorCB(err) {
alert("Error" + err.code);
}
});
</script>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
答案 0 :(得分:0)
您在调试程序时遇到的主要问题是错误回调的签名不正确,它传递了两个参数,即事务和错误(类似于成功回调如何通过事务和结果)。
如果您将errorCB
更改为
function errorCB(tx,err) {
console.log(err);
}
您将看到错误:
SQLError {代码:5,消息:&#34;无法准备声明(1没有这样的表:任务)&#34;}
实例:https://jsfiddle.net/toscqrzz/
如果您向原始CREATE TABLE
提供相同的回调,则会看到
SQLError {代码:5,消息:&#34;无法准备语句(1接近&#34;创建&#34;:语法错误)&#34;}