输出中的javascript websql代码值未定义,尽管在其中存储了值
此代码显示两条警报消息,一条为输出中的javascript websql代码值未定义,尽管在其中存储了值,javascript,html,Javascript,Html,此代码显示两条警报消息,一条为7,另一条为未定义。如何在两个警报消息中获得值7 var db = openDatabase('tournament', '1.0', 'Scoring', 2 * 1024 * 1024); var msg; db.transaction(function (tx) { tx.executeSql("SELECT ballno FROM app_t20_balldetails order by ballno desc", [], function(tx,
7
,另一条为未定义。如何在两个警报消息中获得值7
var db = openDatabase('tournament', '1.0', 'Scoring', 2 * 1024 * 1024);
var msg;
db.transaction(function (tx) {
tx.executeSql("SELECT ballno FROM app_t20_balldetails order by ballno desc", [],
function(tx, result)
{
msg = result.rows.item(0).ballno;
alert(msg);
});
});
alert(msg);
这将帮助您在两个警报中获得相同的输出。
因为Websql API是异步的,所以您必须使用回调
或
使用JQuery不同的承诺,您可以在这里找到第二种方法的详细信息您使用的WebSQL API是异步的。db.transaction(…)
调用只准备执行事务,但不立即调用它。这与AJAX调用的原理基本相同,您需要使用回调。通读一遍,这会给你一个大致的想法。
var fetchBallNo = function (callback){
var db = window.openDatabase('tournament', '1.0', 'Scoring', 2 * 1024 * 1024);
var msg;
db.transaction(function (tx) {
tx.executeSql("SELECT ballno FROM app_t20_balldetails order by ballno desc", [],
function(tx, result)
{
msg = result.rows.item(0).ballno;
alert(msg);
});
}, function(tx, error) {
window.alert("Transaction Error: " + error + tx.message);
callback(null);
}, function(tx) {
callback(msg);
});
};
fetchBallNo(function(msg){
if(msg) {
window.alert(msg);
} else {
window.alert('Value not found');
}
});