PDA

View Full Version : [Javascript] Dare valore a variabili con risultato query


Pol7
07-04-2015, 09:54
Ho un problema con una query web sql.
Voglio leggere dei dati da un db, e il seguente codice funziona perfettamente:

db.transaction(function (tx) {
tx.executeSql('SELECT * FROM '+nomePartita+'', [], function (tx, results) {
var len = results.rows.length, i;
for (i = 0; i < len; i++){
alert(results.rows.item(i).nome);
}
}, null);
});

ora voglio che il risultato venga passato come parametri con il get ad una pagina, e ho scritto questo:

var giocatori;
db.transaction(function (tx) {
tx.executeSql('SELECT * FROM '+nomePartita+'', [], function (tx, results) {
giocatori=new Array(results.rows.length);
var len = results.rows.length, i;
for (i = 0; i < len; i++){
giocatori[i]=(results.rows.item(i).nome);
}
}, null);
});

window.open("tabella.html?primo="+giocatori[0]+"&secondo="+giocatori[1]+"&terzo="+giocatori[2]+"","_self");

Ma riscontro che "giocatori" risulta indefinito.
Ho il sospetto che la query venga fatta in maniera asincrona, però bo.
Qualcuno sa aiutarmi?

tomminno
07-04-2015, 13:10
Web Sql è deprecato, io eviterei di usare qualcosa di non standard, funziona solo con Chrome (Webkit e derivati).

paooolino
08-04-2015, 16:59
le operazioni su db in Javascript sono asincrone (come le chiamate Ajax).

Fai così


var giocatori;
db.transaction(function (tx) {
tx.executeSql('SELECT * FROM '+nomePartita+'', [], function (tx, results) {
giocatori=new Array(results.rows.length);
var len = results.rows.length, i;
for (i = 0; i < len; i++){
giocatori[i]=(results.rows.item(i).nome);
}
window.open("tabella.html?primo="+giocatori[0]+"&secondo="+giocatori[1]+"&terzo="+giocatori[2]+"","_self");
}, null);
});