Как сделать переменную javascript глобальной в api phoneGap [duplicate]

0

Я изучаю, как использовать phonegap сейчас, и обучение идет отлично, но я застрял с глобальной переменной в phoneGap Api. Фактически Сначала я получаю результат из файла xml, а затем вставляю данные в базу данных. Я проделал эту работу, но теперь хочу получить последний идентификатор вставленной строки, а затем вставить в другую таблицу, потому что в xml есть узлы.

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, но оба они не работают.

Теги:
cordova
jquery-mobile

1 ответ

0

Вам даже не нужно, чтобы это было глобальным для этого. Определите lastId в функции, но перед foreach. Если это не сработает, то сделать его глобальным должно действительно работать, перемещая var lastId; line перед функцией заполнятьDB()

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
    Большое спасибо, теперь я получил это
  • 0
    На самом деле, как я уже говорил, они оба не работают в моей ситуации. Я не знаю почему. Возможно я использую phoneGap Api с парсингом xml. Поэтому я сказал, что теперь я получил это. Я все еще застрял там :(

Ещё вопросы

Сообщество Overcoder
Наверх
Меню