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

时间:2011-04-14 11:10:22

标签: sql return global var

我有一个问题,即将SQL-Query的结果传递给全局变量。

我使用这个非常简单的来源

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');

非常感谢您提供任何有用的答案, 卡尔

1 个答案:

答案 0 :(得分:1)

tx.executeSql()是异步的,试试这个:

Global array appended by a function shows up as zero length elsewhere