[英]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.