将SQL查询结果传递给全局变量(db.transaction / tx.executeSql / JavaScript)

| 我有以下问题,将SQL查询的结果传递给全局变量。 我使用这个非常简单的资源
var aGlobal = new Array();

db.transaction( function( tx ) { tx.executeSql( \'SELECT * FROM AddressBook\', [], getSQLValues ) });

function getSQLValues(tx, SQLResultSet) { for (var i=0; i < SQLResultSet.rows.length; i++) { aGlobal[i] = SQLResultSet.rows.item(i); } }

console.log(aGlobal.length); // 0 alert( aGlobal.length ); // no Values get passed WITHOUT this alert! console.log(aGlobal.length); // equals SQLResultSet.rows.length

for (var i=0; i < aGlobal.length; i++) { console.log(aGlobal[i][\'id\']+\' - \'+aGlobal[i][\'AddrValues\']); // can see the values }

该数据库存在, 数据库包含有效数据, 数据库是本地的 html文件是本地文件, 本地html文件在Safari中本地打开。 警报弹出后,只能由其他脚本访问存储在全局数组中的SQLResultSet的行。在没有警报的情况下,我在检查控制台时可以看到全局数组的内容。 关于如何在没有警报的情况下达到全局数组内容的任何建议? 顺便说一句,警报也可以只读取
alert(\'blah\');
预先感谢您提供任何有用的答案, 卡尔     
已邀请:
tx.executeSql()是异步的,请尝试以下操作: 函数附加的全局数组在其他地方显示为零长度     

要回复问题请先登录注册