transaction.executeSql成功函数错误

时间:2013-07-31 13:26:49

标签: javascript html html5 sqlite

我做了一个从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);
    }
}

1 个答案:

答案 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);
    }
}