2013-09-21 18 views
0

我正在學習如何使用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的全局變量的localStorage但兩者都沒有工作..

+0

前行只是聲明它的功能外 –

+0

聲明它下面**功能(XML){** – Greenhorn

+0

#Ram我做了功能(XML){VAR lastId = 「」; db.transaction(函數(事務){\t \t \t \t \t transaction.executeSql( 'INSERT INTO果(FNAME,fsname,fruit_icon,fruit_image)VALUES(?,?,?,?)',[FNAME,fsname,fruit_icon ,fruit_image],function(transaction,results){},nullHandler,errorHandler);}); var lastId = alert(results.insertId); 但仍然相同的錯誤未定義.. – Tariq

回答

0

你甚至都不需要它是全球性的這一點。在函數中但在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); 

      }); 
     } 
    }); 

} 
+0

非常感謝你,現在我知道了 – Tariq

+0

其實正如我之前所說,他們都沒有在我的情況下工作。我不知道爲什麼。也許我用xml解析來使用phoneGap Api。所以我說現在我明白了。我仍然堅持在那裏:( – Tariq