使用Callback在JavaScript中从Web-SQL数据库返回结果集

时间:2014-10-09 11:51:07

标签: javascript web-sql jquery-callback

下面是我的代码,我想返回Result Set并在我的代码中的任何位置使用它。最后一行还打印了' 0'但我希望该值包含Result Set中的行数。
我该怎么做?

var querySql = function(sql, callback) {
    var tab = [];   
    db.transaction(function(tx) {       
        tx.executeSql(sql,[],function(tx, results){         
            for(i = 0; i < results.rows.length; i++){
                tab.push(results.rows);                     
            }
        callback(tab);      
        });
    });
}

var queryLength = 0;
querySql('SELECT * FROM contacts', function(result) {
    console.log("RESULTS: " + result.length); 
    queryLength = result.length;
    console.log("QUERY_LENGTH: " + queryLength); 

    for(var i = 0; i < result.length; i++){
        alert("ITEMS: " + result[i].item(i)['firstname']);
    }   
});

console.log("QUERY_LENGTH_1: " + queryLength);

1 个答案:

答案 0 :(得分:0)

我相信您需要使用for方法访问该项目的item()循环,如下所示:

tx.executeSql(sql,[],function(tx, results){         
  for(i = 0; i < results.rows.length; i++){
      tab.push(results.rows.item(i)); // <--------
  }
    callback(tab);      
});

这应该用您的记录填充tab

此外,您的控制台声明需要在querySql闭包内:

querySql('SELECT * FROM contacts', function(result) {
    //...
    console.log("QUERY_LENGTH_1: " + queryLength);
});

否则,在下一个事件循环执行事务之前,将首先评估