2013-10-02 2 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 

.

+2

이 질문은 StackOverflow에 더 적합 할 것입니다. 이 사이트는 개념적 질문을위한 사이트입니다. – JJJollyjim

답변

-2

이 작업을 수행하기 위해 전역화할 필요조차 없습니다. 함수에서 foreach 앞에 lastId를 정의하십시오. 그래도 작동하지 않는다면, var lastId를 이동하여 전역으로 설정해야합니다. line before function 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

귀하는 이미 사본 아래에 답변을 하였으므로 여기에 답변을 복사 할 필요가 없습니다. –

관련 문제