Mike Linden
Mike Linden

Reputation: 143

Sqlite and jquery variable in for loop setting to last value

I'm trying to loop through all of the tables in my Sqlite DB and send them to the server DB. Everything is working except when I get to the part where I send the information via a $.get() the tbl_name variable is already set to the last value... IE all of the $.get() calls use the same value for tbl_name, the last table name.

        var submissionID=10;
        var varStr;

        DEMODB.transaction(function (transaction) {
            transaction.executeSql("SELECT name FROM sqlite_master WHERE type='table';", [], function(transaction, results) {
                for (var i = 0; i < results.rows.length; i++) {
                    var tables = results.rows.item(i);
                    var tbl_name=tables['name'];

                    if (tbl_name=="__WebKitDatabaseInfoTable__" || tbl_name=="Submission") { continue; }

                    transaction.executeSql("SELECT * FROM " + tbl_name + " WHERE submissionID=?;", [ID], function(transaction, results) {
                        varStr="";
                        for (var i = 0; i < results.rows.length; i++) {
                            var row = results.rows.item(i);

                            for (col in row) {
                                if (col=="submissionID" || col=="ID") { continue; }
                                varStr += col + "=" + row[col] + '&';
                            }
                        }
                        varStr += 'submissionID=' + submissionID + "&table=" + tbl_name + "&num=" + i;
                        $.get("script/to/process.aspx",varStr);
                    }, errorHandler);
                }
            }, errorHandler);
        });

Upvotes: 2

Views: 909

Answers (1)

Lee
Lee

Reputation: 13542

DEMODB.transaction(function (transaction) {
  transaction.executeSql("SELECT name FROM sqlite_master WHERE type='table';", [], function(transaction, results) {
    for (var i = 0; i < results.rows.length; i++) {
      var tables = results.rows.item(i);
      handleTable(tables['name'], transaction);
    }
  }, errorHandler);
});


function handleTable(tbl_name, transaction) {

  if (tbl_name=="__WebKitDatabaseInfoTable__" || tbl_name=="Submission") { return; }

  transaction.executeSql("SELECT * FROM " + tbl_name + " WHERE submissionID=?;", [ID], function(transaction, results) {
    varStr="";
    for (var i = 0; i < results.rows.length; i++) {
      var row = results.rows.item(i);

      for (col in row) {
        if (col=="submissionID" || col=="ID") { continue; }
        varStr += col + "=" + row[col] + '&';
      }
    }
    varStr += 'submissionID=' + submissionID + "&table=" + tbl_name + "&num=" + i;
    $.get("script/to/process.aspx",varStr);
  }, errorHandler);
}

Upvotes: 1

Related Questions