db.transaction(function (tx) {
tx.executeSql('SELECT userid FROM user', [], function (tx,results) {
var len = results.rows.length;
for (var i = 0; i < len; i++) {
userId = results.rows.item(i).userid;
alert(results.rows.item(i).userid );
}
}, dbErrorHandler);
}, dbErrorHandler);
alert(userId);
在上面的代码中,最后一个警报显示在上一个数据库事务语句之前。
为什么会出现这样的情况呢?有人可以提出解决方案吗?
最佳答案
这是一个异步调用,您需要在成功回调中显示警报:
db.transaction(selectDB, errorCB, successCB);
function selectDB(tx) {
tx.executeSql('SELECT userid FROM user', [], function (tx,results) {
var len = results.rows.length;
for (var i = 0; i < len; i++) {
userId = results.rows.item(i).userid;
alert(results.rows.item(i).userid );
}
}, dbErrorHandler)
}
// Transaction error callback
//
function errorCB(err) {
alert(err);
dbErrorHandler;
}
// Transaction success callback
//
function successCB() {
alert(userId);
}
关于javascript - 在phonegap中的数据库事务语句之前发出警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20616318/