簡體   English   中英

在WebSQL服務器中存儲JSON數據

[英]Storing JSON data in WebSQL server

我正在嘗試使用.getJSON()和.each將JSON數據加載到webSQL服務器中,以遍歷數據庫中的記錄。

function createDB(){
var db = openDatabase('Json', '1.0', 'local version of Json db', 2 * 1024 * 1024);
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE categorie (categorie_id INTEGER, cat_naam TEXT)');
    $.getJSON("http://localhost:8080/Json/welcome/categorie", function(data){
        $.each(data, function(index) {
            console.log(data[index].categorie_id);
            tx.executeSql('INSERT INTO categorie (categorie_id, cat_naam) VALUES (?,?)', [data[index].categorie_id, data[index].cat_naam]);
        });
    });
});

}

但是,在將ID寫入日志后,javascript將停止運行。

我不知道我在做什么錯,根據我閱讀的一些文檔和教程,我應該做正確的語法,但也許與我正在使用這兩個函數(.getJson和.each)與交易相關聯。

此應用程序也在使用AppFramwork和Cordova的Intel XDK項目中。

您的問題是您試圖同步執行多個數據庫操作。 DB API是異步工作的,因此您需要使用回調來確保上一個操作已完成,然后再開始下一個操作。 我會嘗試這樣做:

function createDB(){
var db = openDatabase('Json', '1.0', 'local version of Json db', 2 * 1024 * 1024);
var jsonData;

db.transaction(function (tx) {
    tx.executeSql('CREATE TABLE categorie (categorie_id INTEGER, cat_naam TEXT)', [], getJson);
});

function getJson(){
    $.getJSON("http://localhost:8080/Json/welcome/categorie", function(data){
        jsonData = data;
        db.transaction(function (tx) {
            doInsert(function(){
                console.log("DB inserts complete");
            }, tx);
        });
    });
}

function doInsert(onSuccess, tx){
    if(jsonData.length > 0){
        var data = jsonData.shift();
        console.log(data.categorie_id);
        tx.executeSql('INSERT INTO categorie (categorie_id, cat_naam) VALUES (?,?)', [data.categorie_id, data.cat_naam], doInsert.bind(this, onSuccess));
    }else{
        onSuccess();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM