我目前正在使用phonegap和sqllite开发一个小应用程序。 填充数据库工作正常;但是我需要一个函数来返回一个html-string(对于id)。
我有来自互联网的这个小片段,我为了我的目的而“改进”,但它不能像预期的那样工作:(
function getPriceFromDatabase(id) {
var result = [];
// Query the database
//
function queryDB(tx) {
tx.executeSql('SELECT * FROM PRICEFTS WHERE pid MATCH ' + id, [], querySuccess, errorCB1);
}
// Query the success callback
//
function querySuccess(tx, results) {
var len = results.rows.length;
for (var i = 0; i < len; i++) {
result.push('<span class="'+results.rows.item(i).priceart+'">'+results.rows.item(i).price+'</span>');
}
}
// Transaction error callback
//
function errorCB1(err) {
console.log("Error SQL: " + err.code);
}
// Transaction success callback
//
var db = window.openDatabase("sucheDB", "1.0", "Suche DB", 52428800);
db.transaction(queryDB, errorCB1);
return result.join('');
}
以下是我的示例事件:
$("#price_button").click(function () {
var p = getPriceFromDatabase(88361);
console.log(p);
$('#price').html(p);
})
(结果总是'未定义')
有人可以帮忙吗?
谢谢! :)
答案 0 :(得分:0)
您应该向db.transaction
电话提供成功回调,如下所示:
db.transaction(queryDB, errorCB1, querySuccess);
此函数也可能是异步的,因此在事务完成之前执行return
。