-
Hallo,
ich habe ein Problem mit er Rückgabe.
Mein code:
Mit der Funktion onOffline hole ich mir ein JSON String. Der String wird unter der Funktion selectData() auch richtig zusammengestellt und in die Variable Call geschrieben.HTML-Code:<script> function selectData(){ db = initDB(); db.transaction(function(tx) { tx.executeSql('SELECT * FROM kneipe_event', [], function(tx, rs) { var stEvents = ""; var heki = "eventListBg"; var fr = "fr"; var bg = "1"; var Wochentag = new Array("SO", "MO", "DI", "MI", "DO", "FR", "SA"); for(var i = 0; i < rs.rows.length; i++) { var ive = giveMe(rs.rows.item(i).datum); var iv = new Date(ive[0], ive[1], ive[2],0,0,0); var ives = Wochentag[iv.getDay()]; stEvents = stEvents + '{"bg":"' + bg + '","heki":"' + heki + '","fr":"' + fr + '","id":"' + rs.rows.item(i).id + '","titel":"' + rs.rows.item(i).titel + '","tag":"' + ive[2] + '","monat":"' + ive[1] + '","jahr":"' + ive[0] + '","tagName":"' + ives + '","artist":"' + rs.rows.item(i).titel + '"},'; if(bg == "1") { bg = "2"; heki = "heki"; fr = ""; } else { bg = 1; heki = "eventListBg"; fr = "fr"; } } stEvents = stEvents.substr(0, stEvents.length-1); call = "[" +stEvents+ "]"; //console.log(call); //return call; }); }); } function onOffline() { var sqlData = selectData(); console.log(sqlData); } </script>
Wenn ich nun call zurückgegeben lasse an onOffline ist das undefine.
An welcher Position muss denn nun das return call? ich habe es schon mehrmals mit anderen Positionen durchgespielt. console.log(call); unterhalb der for-schleife zeigt mir aber den Inhalt an.
Ist zum Mäuse melken.
Grüße
-
Da die Datenbankabfrage asynchron ist, kannst du den Wert nicht als Rückgabewert benutzen. Du musst der Funktion selectData als Parameter ebenfalls eine Funktion übergeben, die innerhalb der callback Funktion von executeSql aufgerufen wird.
-
Klingt total einleuchtend was du sagst. bin aber gerade ein bisschen aufgeschmissen.
-
Ich füge es mal in deinen Code ein, ohne es zu testen. Falls es nicht sofort lauffähig ist, siehst du zumindest, was ich meine. Es mussten praktisch nur drei Zeilen geändert werden!
Code javascript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
function selectData(fn){ db = initDB(); db.transaction(function(tx) { tx.executeSql('SELECT * FROM kneipe_event', [], function(tx, rs) { var stEvents = ""; var heki = "eventListBg"; var fr = "fr"; var bg = "1"; var Wochentag = new Array("SO", "MO", "DI", "MI", "DO", "FR", "SA"); for(var i = 0; i < rs.rows.length; i++) { var ive = giveMe(rs.rows.item(i).datum); var iv = new Date(ive[0], ive[1], ive[2],0,0,0); var ives = Wochentag[iv.getDay()]; stEvents = stEvents + '{"bg":"' + bg + '","heki":"' + heki + '","fr":"' + fr + '","id":"' + rs.rows.item(i).id + '","titel":"' + rs.rows.item(i).titel + '","tag":"' + ive[2] + '","monat":"' + ive[1] + '","jahr":"' + ive[0] + '","tagName":"' + ives + '","artist":"' + rs.rows.item(i).titel + '"},'; if(bg == "1") { bg = "2"; heki = "heki"; fr = ""; } else { bg = 1; heki = "eventListBg"; fr = "fr"; } } stEvents = stEvents.substr(0, stEvents.length-1); call = "[" +stEvents+ "]"; //console.log(call); //return call; fn(call); }); }); } function onOffline() { selectData(function(sqlData) { console.log(sqlData); }); }
-
Okay funktioniert sehr gut!
Hab dazu noch was gefunden http://www.w3.org/TR/webdatabase/
Danke dir!
Ähnliche Themen
-
oncontextmenu="return false" onselectstart="return false"
Von an_dy im Forum Javascript & AjaxAntworten: 8Letzter Beitrag: 29.07.06, 11:05 -
return
Von Blobb im Forum PHPAntworten: 3Letzter Beitrag: 14.10.05, 01:14 -
Problem mit Abfrage: leer & nicht leer
Von wo0zy im Forum PHPAntworten: 5Letzter Beitrag: 08.04.05, 17:51 -
return?
Von sra im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 18.02.04, 16:50 -
Ganzzahldivision.... returnwert = leer oder nicht leer
Von mille im Forum PHPAntworten: 4Letzter Beitrag: 05.08.03, 23:57



2Danke


Zitieren

Login





