Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取Webkit executeSql事务以返回值_Javascript_Sqlite_Webkit - Fatal编程技术网

Javascript 获取Webkit executeSql事务以返回值

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

如何让下面的JavaScript返回
,以便在事务之外访问它?苹果的所有示例代码似乎都在事务中将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方法的可用参数^^^^我非常有兴趣了解您将如何做到这一点(我的意思是通过闭包)。我尝试了很多次,但都没有成功。