使用回调从JavaScript中的Web SQL数据库返回结果集
Use of Callback to return a Result Set from Web-SQL Database in JavaScript
下面是我的代码,我想返回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);
我相信在您的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);
});
否则,在下一个事件循环中执行事务之前,它将首先被评估。
相关文章:
- 从Chrome扩展访问Google Cloud SQL数据库
- 在php和mysql中选择选项.一旦选择了选项,就列出我的sql数据库数据
- 如何将javascript变量写入sql数据库
- 使用Ajax和JQuery从SQL数据库中添加和删除一行
- 在一定时间后从SQL数据库检索行
- 通过 ajax POST 向 PHP 发送两个值以查询 SQL 数据库
- 从 Web SQL 数据库检索音频并使用 Web 音频 API 播放
- 尝试在移动优先应用程序中从 SQL 数据库获取数据时出错
- 如何在不刷新页面的情况下从 PHP 中的 SQL Server 数据库获取数据
- 使用 SQL .js在 JavaScript 中加载 SQLite 数据库
- 从PHP自动完成动态搜索SQL数据库
- 用sql数据库更新谷歌地图标记
- 单击按钮上的添加/追加动态数据库(SQL)选择框
- 使用SQL数据库中的值过滤JSP上的表值
- 循环中的本地数据库sql查询
- 具有Web SQL数据库的客户端存储
- 如何使用函数从Web SQL数据库中检索值
- 用Google Sheets完全取代MySQL(或任何SQL)数据库
- 关于在数据库(SQL)中保存文本数据的要求
- 将数据保存到数据库SQL SERVER中的问题