Javascript Web数据库-返回数据

Javascript Web数据库-返回数据,javascript,extjs,web-sql,Javascript,Extjs,Web Sql,这是密码 onError = function(tx, e) { alert('Something unexpected happened: ' + e.message ); } var webdb = openDatabase(dbName, '1.0' , dbDesc , dbSize); var colourArray = new Array(); webdb.transaction(function(tx) {

这是密码

    onError = function(tx, e) {
        alert('Something unexpected happened: ' + e.message );
    }

    var webdb = openDatabase(dbName, '1.0' , dbDesc , dbSize);

    var colourArray = new Array();

    webdb.transaction(function(tx) {
        tx.executeSql('SELECT * FROM colours', 
                      [], 
                      function(tx,rs) {
                        var ctn = rs.rows.length;
                        for (var i=0; i < ctn; i++) {
                            var row = rs.rows.item(i);                
                            colourArray.push([row.id , row.title]);
                        }   
                      }, 
                      onError);
    });
    /**
     * the array looks like [[1,'red'],[2,'white'],[3,'black'] ...]
     */
     var ColourStore = new Ext.data.ArrayStore({fields: ['key', 'val'],
                                               data: colourArray});
表格颜色包含颜色名称和哈希代码。假设ExtJS Ext.data.ArrayStore使用它,然后在一个大表单上填充其他下拉列表


我的问题是-我无法将数据作为数组返回。变量数组为空。。。我知道我遇到了一些javascript闭包、循环问题。。。但就是想不出如何找回那个内部循环值。尝试大量返回->返回->返回功能和更多返回。它们都不起作用

executeSQL是异步的。您需要在functiontx、rs回调函数中创建ColorStore。如果您需要全局可用的数据,在executeSQL调用回调函数之前,您无法初始化应用程序。例如:

Ext.onReady( function() {
    var webdb = openDatabase(dbName, '1.0' , dbDesc , dbSize);

    var colourArray = new Array();
    var ColourStore;

    webdb.transaction( function(tx) {
        tx.executeSql('SELECT * FROM colours',
        [], function(tx,rs) {
            var ctn = rs.rows.length;
            for (var i=0; i < ctn; i++) {
                var row = rs.rows.item(i);
                colourArray.push([row.id , row.title]);
            }
            //INIT YOUR APP HERE IN ORDER TO HAVE ACCESS TO colourArray values
            ColourStore = new Ext....
            YourApp.init();
        },
        onError);
    });
}, this);

刚刚找到了线索[符号…]这一点使得整个HTML5还没有准备好进入黄金时间。。。真的想一想仅仅获取一个变量的痛苦吗?刚刚测试了activeRecord克隆。也不行。因为我的问题是。我有一个全局属性变量。我需要将结果集放入variable属性中,然后供其他方法函数稍后使用。当您尝试在之前console.logvariable时-为空。后-未定义。在中间,同时仍在执行QQL调用回语句。这正是我想要的——充满了数据。在过去的两天里尝试了很多事情。甚至将返回的数据放在一个隐藏的div中,并尝试稍后将其取回。不走运。只是没有做您期望从sql引擎中得到的事情。。。暂时切换到谷歌齿轮和希望!有人在听他们说他们创造了一项无用的技术。再次感谢浏览器制造商和无用的w3cI希望它能这么简单。总共有17个查询。。。像你说的那样把逻辑分开是不可能的。是的,一个可以。如果我只有一个下拉列表。但是有超过17个。。。在一张3页的大表格上。好的,我做了另一个测试。基本上和以前一样。但在循环内部。我只是jQuery.data;我讨厌这个该死的评论框的键盘截图!!!!!你可以按回车键。愚蠢的无论如何,循环中的代码是。jQuery'body'。数据{'returnData':rowData};如果你想马上把它拿回来。它不起作用。但如果你把它挂在一个按钮或什么东西上。单击,数据将以您想要的方式返回。所以我确信我在这方面有所收获。它只需要找出为什么我不能在jQuery附加数据之后立即返回数据。有大师吗?发布更多代码?您需要在回调函数中执行所有变量赋值。我不知道如何更好地解释。。。请根据您的原始问题对答案进行投票,因为它是正确的。好的,我终于找到了一个工作循环。在这里和那些迷失的灵魂一起分享。如果您将其与localStorage结合—在获取数据之后。将对象设为字符串抱歉根本无法存储为对象,然后将其存储在localStorage中。然后,您可以从应用程序中其他任何位置的localStorage获取它。如何字符串到对象。。。你应该知道。希望这能帮助别人。