0

我做了一个从 db 中选择数据并显示警报的函数,但在 Success 函数中出现以下错误:

无法读取未定义的检索数据的属性“行”

这是我的功能

 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);
    }
}
4

1 回答 1

1

看起来您的函数正在立即执行,并且没有数据传递给它,所以显然该rows属性来自undefined.By write ()after retrieveData,您正在立即调用该函数。删除()以将其用作回调。

看来您还需要将数据传递给它,因此匿名函数可能会在这里解决问题:

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);
    }
}
于 2013-07-31T13:33:06.023 回答