2014-04-24 58 views
1

我们在循环中得到了相同的结果。如果任何人都能理解我犯错的地方,请告诉我。请参阅此截图以了解一个想法。在Javascript中,一次又一次显示相同的结果

我尝试警告很多地方,似乎一切都很好。但不知道为什么不能得到结果。执行“executeSql”不能正确使用循环中的多个值?

或者在选择查询中是否有任何错误?请让我知道为什么,这是造成这样的问题?

enter image description here

var db; 
    var shortName = 'WebSqlDB'; 
    var version = '1.0'; 
    var displayName = 'WebSqlDB'; 
    var maxSize = 65535; 


window.onload = function(){ 

     document.addEventListener("deviceready",init,false); 
    } 

function init(){ 

      if (!window.openDatabase) { 
       alert('Databases are not supported in this browser.'); 
       return; 
      } 

      db = openDatabase(shortName, version, displayName,maxSize); 

      db.transaction(function(tx){ 
      tx.executeSql('DROP TABLE post_details',nullHandler,nullHandler);  
      tx.executeSql('CREATE TABLE IF NOT EXISTS post_details(UserId INTEGER NOT NULL PRIMARY KEY, post_title TEXT NOT NULL, post_date TEXT NOT NULL,post_comment TEXT NOT NULL,post_content TEXT NOT NULL, post_categories TEXT NOT NULL, post_image TEXT)',[],nullHandler,errorHandler); 
       },errorHandler,successCallBack); 


      if(checkConnection() != "No network connection"){ 
       $.ajax({ 
       url: 'http://www.foduu.com/api/get_recent_posts/?callback=?', 
       type: 'GET', 
       dataType: 'json', 
       success: function(data){ 
        console.log(data); 

        var number_of_post = Object.keys(data.posts).length; 

        for(var i=0; i < number_of_post; i++){ 

             var ptitle = data.posts[i].title; 
             var pdate = data.posts[i].date; 
             var pccount = data.posts[i].comment_count; 
             var pcontent = data.posts[i].content; 
             var pcategories = data.posts[i].categories; 
             var pimage = "my image"; 
             //alert(ptitle +","+ pdate +","+ pccount+","+ pcategories +","+ pimage); 
             db.transaction(function(transaction) { 
              transaction.executeSql('INSERT INTO post_details(post_title,post_date,post_comment,post_content,post_categories,post_image) VALUES (?,?,?,?,?,?)',[ptitle,pdate,pccount,"pcontent",pcategories,pimage],nullHandler,errorHandler); 
             }); 
        } 


        db.transaction(function(transaction) { 
         transaction.executeSql('SELECT * FROM post_details;', [], 
          function(transaction, result) { 
          $.each(result.rows,function(index){ 
           var row = result.rows.item(index); 


           var post_single="<li class='post'>" + 
           "<a href='#' class='post_more'></a>" + 
           "<div class='post_right_reveal'>" + 
           "<h4><a href='#' onclick='swiperParent.swipeTo(4);'>"+ row['post_title'] +"</a></h4>" + 
           "</div>" + 
           "<div class='post_right_unreveal'>" + 
           "Posted in <a href='#'>blog category</a>" + 
           "<span class='post_comments'>25 Comments</span>" + 
           "<a href='#' class='post_readmore' onclick='swiperParent.swipeTo(4);'>read more</a>" + 
           "</div>" + 

            "<div class='post_left'>" + 
             "<span class='day'>7</span>" + 
             "<span class='month'>feb</span>" + 
            "</div>" + 
            "</li>"; 
            $('#posts-all').append(post_single); 
            $('#posts-all').trigger('create'); 


          }); 

         }); 
        },errorHandler,nullHandler); 

       }, 
       error: function(data){ 
         alert("Can Not Fetch data From server"); 

        } 


       }); 

      } 
      else 
       { 
        alert("No Internet Connection"); 
       } 

    } 

function checkConnection() { 
     var networkState = navigator.network.connection.type; 

     var states = {}; 
     states[Connection.UNKNOWN] = 'Unknown connection'; 
     states[Connection.ETHERNET] = 'Ethernet connection'; 
     states[Connection.WIFI]  = 'WiFi connection'; 
     states[Connection.CELL_2G] = 'Cell 2G connection'; 
     states[Connection.CELL_3G] = 'Cell 3G connection'; 
     states[Connection.CELL_4G] = 'Cell 4G connection'; 
     states[Connection.NONE]  = 'No network connection'; 

     return states[networkState]; 
    } 

function errorHandler(transaction, error) { 
    alert('Error: ' + error.message + ' code: ' + error.code); 

} 

function successCallBack() { 
    alert("DEBUGGING: success"); 
} 

function nullHandler(){}; 

,是有什么办法可以加载我main.js之前所有其它JS或CSS文件的文件?

我试着执行多个executeSql它工作得很好。但是,当我在FOR循环中使用它时,它只是一次又一次地给我一个相同的标题。如果需要,我可以将代码放在github上供您试用。

预先感谢您!

回答

0

好的问题解决了,我正在运行FOR循环出侧db.trasaction(..)它应该运行在tx.excuteSql(...)这解决了我的问题。

我很高兴自己找到了解决方案。 :)

谢谢!

相关问题