2013-10-02 17 views
-2

我正在學習如何使用phonegap,並且學習進展順利,但是我在phoneGap Api中卡住了全局變量。其實首先我從XML文件得到結果,然後將數據插入數據庫。我已經完成了這項工作,但現在我想獲取插入行的最後一個ID,然後插入到另一個表中,因爲在XML中有子節點。如何在phoneGap api中使javascript可變全局

function populateDB(tx) { 
     tx.executeSql('DROP TABLE IF EXISTS fruit'); 
     tx.executeSql('DROP TABLE IF EXISTS fruit_benefit'); 
     tx.executeSql('CREATE TABLE IF NOT EXISTS fruit (id INTEGER NOT NULL PRIMARY KEY, fname,fsname,fruit_icon,fruit_image)'); 
     tx.executeSql('CREATE TABLE IF NOT EXISTS fruit_benefit (id INTEGER NOT NULL PRIMARY KEY, benefit, fruit_id)'); 
     $.ajax({ 
     type: "GET", 
     url: "data.xml", 
     dataType: "xml", 
     success: function(xml) { 
      $(xml).find('fruit').each(function(){ 
       var fname = $(this).find('fname').text(); 
       var fsname = $(this).find('fsname').text(); 
       var fruit_icon = $(this).find('fruit_icon').text(); 
       var fruit_image = $(this).find('fruit_image').text(); 
       //$('<div class="items" id="link_'+fname+'"></div>').html('<a href="'+fsname+'">'+fname+'</a>').appendTo('#lbUsers'); 
       db.transaction(function(transaction) { 
        transaction.executeSql('INSERT INTO fruit (fname,fsname,fruit_icon,fruit_image) VALUES (?,?,?,?)',[fname, fsname, fruit_icon, fruit_image],function(transaction, results){ 
       var lastId = results.insertId; 
      },nullHandler,errorHandler); 
       }); 

       alert(lastId); 

      }); 
     } 
    }); 

} 

相關的線路有:

var lastId = results.insertId; //The last inserted id is shown here. 

alert(lastId); //I want to show last inserted id here 

我曾經嘗試都一個JavaScript全局變量和本地存儲但也正在努力。

+2

這個問題會更適合StackOverflow。這個網站是針對概念性問題的。 – JJJollyjim

回答

-2

你甚至不需要它是全球性的。在函數中但在foreach之前定義lastId。如果這不起作用,那麼通過移動var lastId,使其成爲全局應該真的起作用;行函數populateDB()

function populateDB(tx) { 
     tx.executeSql('DROP TABLE IF EXISTS fruit'); 
     tx.executeSql('DROP TABLE IF EXISTS fruit_benefit'); 
     tx.executeSql('CREATE TABLE IF NOT EXISTS fruit (id INTEGER NOT NULL PRIMARY KEY, fname,fsname,fruit_icon,fruit_image)'); 
     tx.executeSql('CREATE TABLE IF NOT EXISTS fruit_benefit (id INTEGER NOT NULL PRIMARY KEY, benefit, fruit_id)'); 
     $.ajax({ 
     type: "GET", 
     url: "data.xml", 
     dataType: "xml", 
     success: function(xml) { 

      var lastId; 

      $(xml).find('fruit').each(function(){ 
       var fname = $(this).find('fname').text(); 
       var fsname = $(this).find('fsname').text(); 
       var fruit_icon = $(this).find('fruit_icon').text(); 
       var fruit_image = $(this).find('fruit_image').text(); 
       //$('<div class="items" id="link_'+fname+'"></div>').html('<a href="'+fsname+'">'+fname+'</a>').appendTo('#lbUsers'); 
       db.transaction(function(transaction) { 
        transaction.executeSql('INSERT INTO fruit (fname,fsname,fruit_icon,fruit_image) VALUES (?,?,?,?)',[fname, fsname, fruit_icon, fruit_image],function(transaction, results){ 
       lastId = results.insertId; 
      },nullHandler,errorHandler); 
       }); 

       alert(lastId); 

      }); 
     } 
    }); 

} 
+1

你已經在重複的答案,沒有必要也複製你的答案在這裏。 –