[Javascript] script vertoont fouten na 1x uitgevoerd

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • RainerSGF
  • Registratie: Juli 2008
  • Laatst online: 17-09 22:22
Ik heb voor een administratie-gedeelte van een website code geprogrammeerd die toelaat geposte berichten op de site na te zien en door de administrator aan te vinken indien deze mogen gepubliceerd worden. Dit heb ik laten realiseren via Ajax, echter nu de code/script éénmaal met succes uitgevoerd is...blijkt het script een fout te vertonen wanneer het een volgende keer moet uitvoeren.

Even hier mijn code laten zien:
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
function getSelectedMessages(){
        
        
         xmlhttp = GetXmlHttpObject();
                
        if(xmlhttp == null){
            alert("Uw browser ondersteunt geen HTTP-aanvragen!");
            return;
        }
        
    
        for(var i=0; i < document.berichten.check.length; i++){         
            if(document.berichten.check[i].checked){
                alert("" + i);  //alert-test, maar draait niet bij 2de script-uitvoering
                n = document.getElementsByName("nr")[i].innerHTML;
                nr = Number(n);
                
                
                url = "functions.php";
                url = url + "?nr=" + nr;
                //url = url + "&sid=" + Math.random();      
                
                xmlhttp.onreadystatechange = state_change;
                xmlhttp.open("GET",url,true);
                xmlhttp.send(null);
            }
        }
    }


Tot op heden heb ik al eens geprobeerd te debuggen met 'Firebug' (via afbreekpunten). Hierbij zie ik dat gestopt wordt bij 'xmlhttp' (zegt dat deze 'undefined' is) en bij de for-loop. Ik heb 'xmlhttp' wel als variabele gedeclareerd helemaal in het begin van dit externe javascript-bestand.

K'zie verder niet waar ik mis ben. Iemand die me kan helpen?

Systeem - I'm learning, I learn it from a book :)


Acties:
  • 0 Henk 'm!

  • Sponz
  • Registratie: Juni 2001
  • Niet online

Sponz

nul nest parfait saif moi

Zet xmlhttp = GetXmlHttpObject(); binnen de loop, ik denk dat ie dan wel meer dan 1 keer loopt.

Acties:
  • 0 Henk 'm!

  • pieturp
  • Registratie: April 2004
  • Laatst online: 18-09 15:56

pieturp

gaffa!

Niet dat 't waarschijnlijk veel uitmaakt voor je probleem, maar 't is wel veel netter om al je variabelen bij initialisatie te voorzien van het statement 'var'. Dus
code:
1
2
3
var xmlhttp = getXmlHttpObject();
var n = "";
var nr = ""; //etc.
Zodoende worden 't geen globals die in andere functies mogelijk ook worden gebruikt!

Ook kun je i.p.v. alert(); console.log(); gebruiken. Je geeft immers aan firebug te gebruiken :-)

edit:

Ook hoef je geen variabele nr te maken, via een omslachtige Number(n). Je maakt er namelijk gelijk weer een string mee (var) url. Sowieso is JavaScript loosely typed, dus strings worden automatisch numbers als je er mee zou willen rekenen :-)

[ Voor 22% gewijzigd door pieturp op 11-01-2010 13:42 . Reden: aanvulling ]

... en etcetera en zo