1

我正在尝试使用通过 AJAX 获取的一些 JSON 数据来更新 SQLite。这是我迄今为止的进步。问题是这个函数总是返回 false。我知道这是因为 db.transaction 的第二次异步执行。我该如何解决这个问题?提前致谢!

function updateDb(url) {
    $.ajax({url: url,
        type: "get",
        dataType: "jsonp",
        async: true,
        success: function (result) {
            ajax.parseJSONP(result);
        },
        error: function (request,error) {
            console.error('Network error while fetching IR JSON!');
        }
    });
    var ajax = {  
            parseJSONP:function(result){
                var db = window.openDatabase("Test", "1.0", "Test DB", 100000);
                db.transaction(populateDB, errorCB, successCB);

                function populateDB(tx) {
                    tx.executeSql('DROP TABLE IF EXISTS testtable;');
                    tx.executeSql('CREATE TABLE IF NOT EXISTS testtable (id NUMERIC PRIMARY KEY, testtext TEXT)');
                    $.each( result, function(i, row) {
                        tx.executeSql('INSERT INTO testtable (id, testtext) VALUES (' + row[0] + ',\'' + row[1] + '\';'); 
                    });
                }

                function errorCB(err) {
                    console.error("Error processing SQL: "+err.message);
                    return false;
                }

                function successCB() {
                    console.info("Updating DB successful!");
                    return true;
                }
            }
        }
}
4

1 回答 1

0

好的,我通过使用两个回调解决了这个问题,一个用于解析JSONP,一个用于成功回调。我认为这是一个有效的解决方案,但是,我真的很讨厌仅通过回调进行导航。

于 2013-08-18T08:09:52.483 回答