我有以下问题将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');
非常感谢您的任何有用的答案, 卡尔