2011-01-14 15 views
2

Dies ist in einer Chrome-Erweiterung und kann sagen, dass ich diesen Code habe:Html5 sagt, dass die Werte nicht definiert sind

var DB = openDatabase('CMPDB', '1.0', 'Database for CMP', 4 * 1024 * 1024); 
LoadFromDB(); 

function LoadFromDB() { 

    DB.transaction(function(tx) 
    {   
     tx.executeSql('CREATE TABLE IF NOT EXISTS table(X, Y, Z UNIQUE)'); 

     tx.executeSql('SELECT * FROM table', [], function (tx, results) { 
      var len = results.rows.length; 
      for (i = 0; i < len; i++) {     
       alert(results.rows.item(i).X.text); 
       alert(results.rows.item(i).Y.text); 
       alert(results.rows.item(i).Z.text);       

      } 
     }); 
    }); 
} 

Warum alle Warnungen als undefiniert zurück Vermutungs kommen, dass die Tabelle vor erstellt worden ist, und dass die Dev Tools auf Chrome sagen, dass die Werte in der Tabelle sind?

+0

Versuchen Sie, console.log (Ergebnis); um das Objekt in der Webkit-Entwicklerkonsole zu überprüfen – sissonb

+1

Erstens, es ist nicht HTML 5, das sagt, dass Werte "undefiniert" sind, sondern Chrome JavaScript-Interpreter V8 (ja, ich weiß, ich bin ein Nissenpicker). Zweitens, können Sie zeigen, was 'tx.executeSql' tut? Es scheint mir, dass diese Funktion "Ergebnisse" mit Ergebnissen füllen sollte. –

Antwort

0

Ich denke, Ihre SELECT Anweisung könnte vor die Tabelle aufgerufen werden, die erstellt wurde. Haben Sie versucht, Ihre SELECT Anfrage an eine Rückruffunktion zu verschieben, so dass sie heißt, nachdem Ihre CREATE TABLE SQL ausgeführt wurde. Etwas wie:

tx.executeSql('CREATE TABLE IF NOT EXISTS table(X, Y, Z UNIQUE)', function(tx) { 
    tx.executeSql('SELECT * FROM table', [], function (tx, results) { 
     var len = results.rows.length; 
     for (i = 0; i < len; i++) {     
      console.log(results.rows.item(i).X.text); 
      console.log(results.rows.item(i).Y.text); 
      console.log(results.rows.item(i).Z.text);       
     } 
    });    
}); 
Verwandte Themen