Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[AJAX] JS-error in IE, maar niet in FF

Pagina: 1
Acties:

  • .Alex
  • Registratie: Augustus 2005
  • Laatst online: 01-08-2022
Goedenavond iedereen,

Ik loop momenteel tegen het volgende probleem aan en kom er gewoon niet uit...

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
50
51
52
53
54
55
56
57
58
59
60
function actiecodecontrole(actiecode){
    var oXmlHttp = createXMLHttp();
    oXmlHttp.open("get", "xml/xml_shoppingbag.php?actiecode="+actiecode, false);
    oXmlHttp.send(null);

    var response = oXmlHttp.responseXML.documentElement;
    var artikelen = response.getElementsByTagName("artikel");

    for (i=0;i<artikelen.length;i++){
            artikel_id = response.getElementsByTagName('artikel')[i].getAttribute('id');
            prijs = response.getElementsByTagName('prijs')[i].firstChild.data;
            totaalprijs_artikel = response.getElementsByTagName('totaalprijs_artikel')[i].firstChild.data;
            actiecode_omschrijving = response.getElementsByTagName('actiecode_omschrijving')[i].firstChild.data;

            if(actiecode_omschrijving == 0){
                actiecode_omschrijving = "";
            }
            else{
                actiecode_omschrijving = actiecode_omschrijving+"<br />";
            }

            document.getElementById("prijs_"+artikel_id).innerHTML = prijs;
            document.getElementById("totaalprijs_artikel_"+artikel_id).innerHTML = totaalprijs_artikel;
            document.getElementById("actiecode_omschrijving_"+artikel_id).innerHTML = actiecode_omschrijving;

    }

    aantal_artikelen = response.getElementsByTagName('aantal_artikelen')[0].firstChild.data;
    subtotaal = response.getElementsByTagName('subtotaal')[0].firstChild.data;
    verzendkosten = response.getElementsByTagName('verzendkosten')[0].firstChild.data;

    totaalprijs = response.getElementsByTagName('totaalprijs')[0].firstChild.data;
    totaalactiecode_omschrijving = response.getElementsByTagName('totaalactiecode_omschrijving')[0].firstChild.data;
    totaalkorting = response.getElementsByTagName('totaalkorting')[0].firstChild.data;

    if(totaalactiecode_omschrijving == 0){
        totaalactiecode_omschrijving = "";
    }
    else{
        totaalactiecode_omschrijving = totaalactiecode_omschrijving+"<br />";
    }

    if(totaalkorting == "0,00"){
        totaalkorting = "";
    }
    else{
        totaalkorting="korting: "+totaalkorting;
    }

    document.getElementById("totaal_aantal_artikelen").innerHTML = aantal_artikelen;
    document.getElementById("subtotaal1").innerHTML = subtotaal;
    document.getElementById("subtotaal2").innerHTML = subtotaal;
    document.getElementById("verzendkosten1").innerHTML = verzendkosten;
    document.getElementById("verzendkosten2").innerHTML = verzendkosten;
    document.getElementById("totaalprijs1").innerHTML = totaalprijs;
    document.getElementById("totaalprijs2").innerHTML = totaalprijs;
    document.getElementById("totaalkorting").innerHTML = totaalkorting;
    document.getElementById("totaalactiecode_omschrijving").innerHTML = totaalactiecode_omschrijving;

}


en de xml:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<shoppingbag>
<artikelen>
<artikel id="2825">
<maat>110</maat>
<aantal>2</aantal>
<prijs>17,47</prijs>
<totaalprijs_artikel>34,94</totaalprijs_artikel>
<actiecode_omschrijving>0</actiecode_omschrijving>
</artikel>
</artikelen>
<aantal_artikelen>2</aantal_artikelen>
<subtotaal>34,94</subtotaal>
<verzendkosten>0,00</verzendkosten>
<totaalprijs>34,94</totaalprijs>
<totaalactiecode_omschrijving>Gratis verzending</totaalactiecode_omschrijving>
<totaalkorting>3,95</totaalkorting>
</shoppingbag>


Dit alles werkt prima in Firefox... maar jullie raden het al: het werkt niet in IE.
Deze eigenschap of methode wordt niet ondersteund door dit object
En ik heb het vermoeden dat het mis gaat in 32-34 van het JS-bestand.... maar ik zie het gewoon keihard niet :(

Zien jullie het probleem wel?

edit:
Het werkt ook in Opera.

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 13:11
Die melding betekend dat je bijv de value, of de firstChild, probeert uit te lezen van een object dat niet bestaat. Alert dus eens de objecten waarvan je denkt dat het misgaat, voordat je de childs ervan probeerd te benaderen,

  • .Alex
  • Registratie: Augustus 2005
  • Laatst online: 01-08-2022
Dit werkt:
JavaScript:
1
2
3
    a = response.getElementsByTagName('totaalprijs')[0].firstChild.data;
    b = response.getElementsByTagName('totaalactiecode_omschrijving')[0].firstChild.data;
    c = response.getElementsByTagName('totaalkorting')[0].firstChild.data;


Dit werkt ook:
JavaScript:
1
2
3
    totaalprijs = response.getElementsByTagName('totaalprijs')[0].firstChild.data;
    totaal_omschrijving = response.getElementsByTagName('totaalactiecode_omschrijving')[0].firstChild.data;
    totaal_korting = response.getElementsByTagName('totaalkorting')[0].firstChild.data;


Dit werkt niet (underscore weg bij totaalkorting):
JavaScript:
1
2
3
    totaalprijs = response.getElementsByTagName('totaalprijs')[0].firstChild.data;
    totaal_omschrijving = response.getElementsByTagName('totaalactiecode_omschrijving')[0].firstChild.data;
    totaalkorting = response.getElementsByTagName('totaalkorting')[0].firstChild.data;


WTF? Die variabele wordt overigens nergens anders gebruikt in de applicatie.

edit:
Dus ja, ik heb een oplossing. Maar ik wil wel graag weten wat het probleem is...

[ Voor 4% gewijzigd door .Alex op 10-08-2007 19:37 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

IE is soms best grappig*:
HTML:
1
2
3
4
5
6
<p id="foo">tralala</p>
<script type="text/javascript">

foo = 'bla'; // daar is je error

</script>


Oplossing: je variabelen expliciet declareren.

*eigenlijk is dit meer om van te huilen, maar dat stadium ben ik al gepasseerd

[ Voor 19% gewijzigd door crisp op 10-08-2007 20:01 ]

Intentionally left blank


  • b19a
  • Registratie: September 2002
  • Niet online
crisp schreef op vrijdag 10 augustus 2007 @ 20:00:
IE is soms best grappig*:
HTML:
1
2
3
4
5
6
<p id="foo">tralala</p>
<script type="text/javascript">

foo = 'bla'; // daar is je error

</script>


Oplossing: je variabelen expliciet declareren.
Bedankt voor de tip, deze 'handige feature' kende ik nog niet!

  • .Alex
  • Registratie: Augustus 2005
  • Laatst online: 01-08-2022
crisp schreef op vrijdag 10 augustus 2007 @ 20:00:
IE is soms best grappig*:
HTML:
1
2
3
4
5
6
<p id="foo">tralala</p>
<script type="text/javascript">

foo = 'bla'; // daar is je error

</script>


Oplossing: je variabelen expliciet declareren.

*eigenlijk is dit meer om van te huilen, maar dat stadium ben ik al gepasseerd
Nice, thanks!! Ik was er al bang voor dat het zo simpel was... :)
Pagina: 1