我有一个问题,即将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');
非常感谢您提供任何有用的答案, 卡尔
答案 0 :(得分:1)
tx.executeSql()是异步的,试试这个:
Global array appended by a function shows up as zero length elsewhere