2012-07-26 56 views
1

我正在開發一個使用jQuery mobile 1.1.1和PhoneGap的iPad應用程序。 我用html5sql.js做我的數據庫操作,它工作正常。html5sql.process inside for loop

如何在for循環中使用html5sql.process()

例:

html5sql.process({ 
        "sql": "select id,count from my_table", 
        "data": [], 
         "success": function(transaction, results){   
        }, 
        function(transaction, results){ 

         for(var i = 0; i < results.rows.length;i++){ 

          /// Line 5 
       html5sql.process({ 
             "sql": "select count(*) from my_table1 where id= ?", 
            "data": [results.rows.item(i).id], 
            "success": function(transaction, resultsD){   
           }, 
             function(transaction, resultsD){ 

              if(results.rows.item(i).count == resultsD.rows.length){ 
            //do my task 

          } 
             },function(){} 
            ); 
           } 
          },function(){} 
         ); 

我沒有得到這個代碼的輸出。當我檢查它時,它只能運行到第5行。之後的代碼不起作用。什麼可能導致問題?

回答

0

看來,你的代碼的整個結構是錯誤的。你不應該在循環內但是在外面請求數據庫。下面是我的代碼中生成jQM listview的塊。查詢結果放入一個數組中,JavaScript將解析實際的HTML代碼。希望它有幫助

function showRecords() { 
    document.getElementById('results').innerHTML = '<li data-role="list-divider">Header</li>'; 
    db.transaction(function(tx) { 
     tx.executeSql("SELECT * FROM OrderList", [], function(tx, result) { 
     for (var i = 0, item = null; i < result.rows.length; i++) { 
      item = result.rows.item(i); 
      document.getElementById('results').innerHTML += 
      '<li data-role="fieldcontain" class="ui-field-contain ui-body ui-br ui-li ui-li-static ui-body-c">' 
      +'<a href="#"><p style="font-weight:bold;">'+item['catNo']+'</p>' 
      +'....................... 
      +'</li>'; 
      }  
      $('#results').listview('refresh',true); 
     }); 
    }); 
}