我做了一个从db中选择数据并显示警告的函数,但是我在Success函数中遇到以下错误:
无法读取未定义的retrieveData
的属性'rows'
这是我的功能
function selectAll(){
DB.transaction(
function(transaction) {
transaction.executeSql("SELECT * FROM CDprodutos", [], retrieveData()); //The retrieveData function is where the data is sent/returned to in parameters (transation, results)
});
}
function retrieveData(transaction, results) {
for(var i = 0; i < results.rows.length; i++) {
var data = results.rows.item(i)['id']
alert(data.value);
}
}
答案 0 :(得分:1)
看起来您的函数正在立即执行,并且没有数据传递给它,显然rows
属性来自undefined.
通过在{{()
之后写retrieveData
1}},您正在立即调用该函数。删除()
以将其用作回调。
你似乎也需要将数据传递给它,所以匿名函数可能会在这里诀窍:
function selectAll(){
DB.transaction(
function(transaction) {
transaction.executeSql("SELECT * FROM CDprodutos", [], function() {
retrieveData(transation, results); //not sure where results comes from? parameter of function??
});
});
}
function retrieveData(transaction, results) {
for(var i = 0; i < results.rows.length; i++) {
var data = results.rows.item(i)['id']
alert(data.value);
}
}