Javascript 获取Webkit executeSql事务以返回值
如何让下面的JavaScript返回Javascript 获取Webkit executeSql事务以返回值,javascript,sqlite,webkit,Javascript,Sqlite,Webkit,如何让下面的JavaScript返回行,以便在事务之外访问它?苹果的所有示例代码似乎都在事务中将HTML写入浏览器,而不是将数据传回调用函数 大致如下: function getData() { db.transaction(function(tx) { tx.executeSql("SELECT id FROM table LIMIT 1", [], function(tx, result) { row = result.rows.item(0); }, fun
行
,以便在事务之外访问它?苹果的所有示例代码似乎都在事务中将HTML写入浏览器,而不是将数据传回调用函数
大致如下:
function getData() {
db.transaction(function(tx) {
tx.executeSql("SELECT id FROM table LIMIT 1", [], function(tx, result) {
row = result.rows.item(0);
}, function(tx, error) {
});
});
return row;
}
这可能吗?Webkit存储API是否可以设置为同步而不是异步执行?我认为您需要在这里创建一个闭包,因为在您可以访问这些值之前,这些值正在被垃圾收集/从作用域链中移出。将
行
传递给闭包以供以后访问,或传递给可以在值仍在范围内时处理该值的其他函数
更多信息:我在以下网站上编写了此SQL事务和其他SQL事务的示例: 您必须以异步方式执行WebKit executeSql调用。要解决此问题,您应该:
function(tx, error) {
}
执行某些操作以更新数据。比如:
function(tx, results) {
console.log("Results returned: "+results.rows.length);
for (var i=0; i<results.rows.length; i++) {
var row = results.rows.item(i);
document.getElementById('latestUpdated').innerHTML = row;
}
}
功能(发送、结果){
log(“返回的结果:+Results.rows.length”);
对于(var i=0;i我意识到这是一个非常古老的问题,但我在搜索如何处理JavaScript异步SQLite调用时发现了它。这个问题与我的问题相同,我找到了一个更好的答案(使用闭包扩展所选答案)
我的getData函数版本如下:
function get_option (option, get_option_callback){
if (db === null){
open_database();
}
db.transaction(function (tx) {
tx.executeSql("SELECT rowid,* FROM app_settings WHERE option = ? ", [option],
function(tx, result){
item = result.rows.item(0);
get_option_callback(item.value);
return;
}
}, sql_err);
});
}
然后调用我将使用的方法:
get_option("option name", function(val){
// set the html element value here with val
// or do whatever
$('input[name="some_input"]').val(val);
});
您使用的是公开可用的JavaScript库吗?示例在哪里?它不是库,而是内置在Webkit中的。有关详细信息,请参阅。这个问题帮助我澄清了executeSql方法的可用参数^^^^我非常有兴趣了解您将如何做到这一点(我的意思是通过闭包)。我尝试了很多次,但都没有成功。