tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 2 Beitrag von CPoly
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
153
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Strafi Strafi ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    79
    Hallo,

    ich habe ein Problem mit er Rückgabe.

    Mein code:


    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>
    
    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.

    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
     

  2. #2
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    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.
     

  3. #3
    Strafi Strafi ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    79
    Klingt total einleuchtend was du sagst. bin aber gerade ein bisschen aufgeschmissen.
     

  4. #4
    CPoly CPoly ist gerade online Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    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);
        });
    }
    Fruitgum und Strafi bedanken sich. 

  5. #5
    Strafi Strafi ist offline Mitglied Silber
    Registriert seit
    Apr 2010
    Beiträge
    79
    Okay funktioniert sehr gut!

    Hab dazu noch was gefunden http://www.w3.org/TR/webdatabase/

    Danke dir!
     

Ähnliche Themen

  1. oncontextmenu="return false" onselectstart="return false"
    Von an_dy im Forum Javascript & Ajax
    Antworten: 8
    Letzter Beitrag: 29.07.06, 11:05
  2. return
    Von Blobb im Forum PHP
    Antworten: 3
    Letzter Beitrag: 14.10.05, 01:14
  3. Antworten: 5
    Letzter Beitrag: 08.04.05, 17:51
  4. return?
    Von sra im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 18.02.04, 16:50
  5. Antworten: 4
    Letzter Beitrag: 05.08.03, 23:57