日期:2014-05-16  浏览次数:20445 次

跪求高手帮解决下,读取SQLite后,动态加载列表出现的不同步问题
困扰我一周多了,望高手帮忙解决下,不胜感激。
问题:读取SQLite的事务操作总是最后执行(执行顺序如代码中first run ~~ seventh run)
      我的理想状态是second run最后执行,这样就可以在页面刷新时,只加载一次,现在的
       情况是页面先加载完成后,再动态加载列表。
总之我需要一种解决办法,能够从SQLite中读取数据,然后用数据作参数,动态加载列表,
(重点)页面刷新时,动态加载的列表和原网页内容同步显示。     
如下代码:
<script type="text/javascript">
$(function(){
    alert("third run");
})

$("#pageId").live("pagebeforecreate",function(){   
    db = window.openDatabase("ikea.db", "1.0", "ikea_database", 1024 * 1024);

    alert("first run");
    db.transaction(function(tr) {
    var query1  = "CREATE TABLE IF NOT EXISTS Catalog_tbl";
    tr.executeSql(query1, [] ,loadItems);
    alert("fourth run");
    });
alert("second run");
}); 

function loadItems() {
    alert("fifth run");
    db.transaction(function(tr) {
        var query = "select * from Commodity_tbl where cmd_tpbId = '1' ";
        tr.executeSql(query, [], loadItems_onResult);
    });
}

function loadItems_onResult(tr, rs) {
    alert("sixth run");
    for (var i = 0; i < rs.rows.length; i++) {
        var row = rs.rows.item(i);
        var cmd_id = row.cmd_id;
        var cmd_commodity = row.cmd_commodity;
        alert("seventh run");
        $("#si_ul").append("<li id='"+ cmd_id +"'></li>"); 
        $("#" + cmd_id).append("<a href='link_page/Template_page.htm'>" 
                                + cmd_commodity + "</a>");
    }
}
</script>  
------解决方案--------------------
这个,你sql直接写在js里面了?可能执行的时候有异步的情况,实在不行加个按钮控制下