Javascript probleempje

Gestart doorOne2xs10 reacties28 weergaven

11 berichten · pagina 1 van 1

One2xs

Bot · Topicstarter

Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Javascript function:
Spoiler tonen
function ini(e) {
        if(e == 1) {
            pir = input();
            return pir;
        } else {            
            var cmd = input();

            // AJAX afhandeling
            $.get("ajax.php", { cmd: cmd }, function(data) {
                window.result = data;
                console.log(a + window.result);
            });
            console.log(b + window.result);
            pause(5000);
            console.log(c + window.result);
                msg = new Array();
                msg[0] = " ";   
                msg[1] = "" + window.result + "<br /> ";  
                text1 = "";
                text2 = "";
                count = 0;
                count2 = 0;
                text = msg[0].split("");
        }
    }
Maar nu wil ik dat msg[1] zegmaar var data bevat, die word opgehaald uit ajax.php
Alleen is window.result bij msg[1] undefined, ook bij console log b en c + window.result staat undefined maar bij a krijg ik wel de goede data terug.

En als ik in mijn console type: alert(window.result); krijg ik ook de goede data terug, en hoe lang ik ook wacht tussen ajax en msg[1] wat daaronder word uitgevoerd het wil niet werken sadley
Alvast bedankt smile
0
Berichten
2.950
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Waarschijnlijk omdat het uitvoeren van dat ajax gedeelte wat langer duurt. Je voert dat onderste gedeelte dus al uit voordat het ajax gedeelte klaar is. Waarom zet je dat onderste gedeelte niet in de functie die je uitvoert nadat je ajax.php aanroept?
0
One2xs

Bot · Topicstarter

Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Dan krijg ik de melding dat text2 niet gedefineerd is, (Als ik hem in een setTimeout zet onder ajax.. Maar ik kon inderdaad beter de function in ajax achter function zetten zodat hij hem direct oproept als ajax geladen is, maar alles in de ajax function zetten werkt ook niet..

toevoeging op 6 maart 2012, 12:30:56:
Spoiler tonen
function test() {
        msg = new Array();
                msg[0] = " ";   
                msg[1] = "" + window.result + "<br /> ";  
                text1 = "";
                text2 = "";
                count = 0;
                count2 = 0;
                text = msg[0].split("");
    }
    function ini(e) {
        if(e == 1) {
            pir = input();
            return pir;
        } else {            
            var cmd = input();

            // AJAX afhandeling
            $.get("ajax.php", { cmd: cmd }, function(data) {
                window.result = data;
                test();
            });
                
        }
    }
Dan krijg ik dat text2 niet gedefineerd is op lijn 93:
Spoiler tonen
function afhandeling() {
        oldI = $(#cmd).val();
        oldII = $(#old).html();
        $(#old).html( + oldII + <br /> + oldI + );
        $(#cmd).val();
        $(#cmd).removeAttr(disabled);
    }
    function jesse() {     
        if(first == 1) {
            ini(1);
        } else {
            ini();
        }
        
        text1 = text2 + "<font color=darkgreen>" + text[count] + "</font>";
        text2 += text[count];

            var oldy = document.getElementById(old).innerHTML;
            document.all["cmds"].innerHTML =  + oldy + <br /> + text1 + ;
Regel 15 is regel 93 smile
toevoeging op 6 maart 2012, 12:31:11:
De 2e code staat onder de eerste code.
0
Berichten
2.950
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
function ini(e) {
        if(e == 1) {
            pir = input();
            return pir;
        } else {            
            var cmd = input();

            // AJAX afhandeling
            $.get("ajax.php", { cmd: cmd }, function(data) {
                window.result = data;
                console.log(a + window.result);
            
                console.log(b + window.result);
                pause(5000);
                console.log(c + window.result);
                msg = new Array();
                msg[0] = " ";   
                msg[1] = "" + window.result + "<br /> ";  
                text1 = "";
                text2 = "";
                count = 0;
                count2 = 0;
                text = msg[0].split("");
            
            
            });
            
        }
    }


Zo bedoel ik
0
One2xs

Bot · Topicstarter

Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Nog steeds text2 is not defined op lijn 97

Altijd deze regel: text1 = text2 + "" + text[count] + "";
0
Berichten
2.950
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Maar waarom wil je een lege string doen?
0
One2xs

Bot · Topicstarter

Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Hmm, dit werkt niet toch?

function aap() {
    var aap = boom;
}
function boom() {
    alert(aap);
}


?
Dat is dan waarschijnlijk mijn probleem, ik maak een functie, daarin roep ik een functie aan, in die functie die aangeroepen word maak ik een var, en die wil ik dan in de eerste functie gebruiken..
Ik heb nu de hele functie ini(); weg, en de inhoud gewoon bovenaan jesse(); gezet waar normaal ini(); zou moeten worden aangeroepen.

Alleen dan krijg ik iets met split een error..
Jesse(); :
Spoiler tonen
function jesse() {     
        if(first == 1) {
            pir = input();
            return pir;
        } else {            
            var cmd = input();

            // AJAX afhandeling
            msg = new Array();
            msg[0] = " "; 
            $.get("ajax.php", { cmd: cmd }, function(data) {
                window.result = data;
                //msg = new Array();
                //msg[0] = " ";   
                msg[1] = "" + window.result + "<br /> ";  
                
            
            
            });
            text1 = "";
                text2 = "";
                count = 0;
                count2 = 0;
                text = msg[0].split("");
        }
        //pause(1000);
        text1 = text2 + "<font color=darkgreen>" + text[count] + "</font>";
        text1 = hoi;
        var text2;
        text2 += text[count];

            var oldy = document.getElementById(old).innerHTML;
            document.all["cmds"].innerHTML =  + oldy + <br /> + text1 + ;
        
        if (count < text.length-1){
            count++;
            setTimeout(jesse(), 30);
        } else {
            count = 0;            
            if (count2 != 1) {
                count2++;
                text2 += "";
                text = eval(msg[+count2+].split(""));
                setTimeout(jesse(), 1);
            }
        }
        
        if(first != 1) {
            $(#cmd).attr(disabled, true);
            setTimeout(afhandeling(), 400);
        }
        first = 1;
    }
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Gebruik $.ajax in plaats van $.get

$.ajax heeft namelijk de mogelijkheid om ASYNC uit te zetten. Dit wil zeggen dat je niet meer asynchroon de request verstuurd, maar pas wacht met verder uitvoeren tot er een request binnen is.

Dit zal wel wat performance-issues hebben. Eventueel kan je ook gebruik maken van

$.ajax().done();

Wanneer ajax(); volledig klaar is met uitvoeren voert jQuery vanzelf done() uit.
0
One2xs

Bot · Topicstarter

Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Okay, het werkt nu wel, half.. (Zonder wat Rik zegt) ik ben nu alleen even druk bezig met het maken van een mobiele website voor het bedrijf waar ik werk ik kijk vanavond even verder.
0
Berichten
1.104
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Misschien opzoeken op google?
0
One2xs

Bot · Topicstarter

Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Laurenss schreef:
Misschien opzoeken op google?
Denk je dat ik dat nog niet gedaan heb? emo!
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren