2011-04-14 122 views
0

我有以下问题将SQL查询的结果传递给全局变量。将SQL查询结果传递给全局变量(db.transaction/tx.executeSql/JavaScript)

我用这个非常简单的源

 
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 }

的DB存在, 数据库包含有效数据, 数据库是本地的, html文件是本地的, 本地HTML文件在Safari上本地打开。

存储在全局数组中的SQLResultSet的行只能在弹出警报后才能被进一步的脚本访问。没有警报时,我可以在检查控制台时看到全局数组的内容。

有关如何在没有警报的情况下达到全局数组内容的任何建议?

顺便说一句,警报也可以只读取


alert('blah'); 

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

回答