尽管存储了值,但输出中的javascript websql代码值是未定义的

时间:2014-09-11 05:20:42

标签: javascript html5

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);

此代码显示两条警报消息,其中一条7和第二条undefined。我可以做些什么来在两个警报中获得价值7?

1 个答案:

答案 0 :(得分:0)

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');
    }
});

这将有助于您在两个警报中获得相同的输出。 由于Websql API是异步的,因此您必须使用回调

使用JQuery deffered promises,你可以在这里找到第二种方式的详细信息https://api.jquery.com/jquery.deferred/