Problem mit Callback im Internet Explorer

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Problem mit Callback im Internet Explorer

    Hallo,

    in einem anderen Forum hat man mir geraten bei einer Parameterübergabe in die callback-Funktion "closures" zu verwenden. Das ganz funktioniert im Firefox und im Opera wunderbar, doch im IE7 zickt es rum wenn ich einen Parameter ungleich "" übergebe. Vielleicht kann mir ja hier jemand helfen:

    Quellcode

    1. // Funktion um die AJAX-Antwort zu verwerten
    2. function setOutput(selectedGemarkung) {
    3. if(httpObject.readyState == 4) {
    4. alert(selectedGemarkung);
    5. //Leeren der Auswahlbox
    6. document.getElementById("gemarkung").length = "1";
    7. // Eintragen der Antwort in die Auswahlbox
    8. var gemarkungen = httpObject.responseText.split("#");
    9. for (var i = 0; i < gemarkungen.length-1; ++i) {
    10. var newEntry = new Option(trim(gemarkungen[i]), trim(gemarkungen[i]));
    11. if (selectedGemarkung == trim(gemarkungen[i])) {
    12. newEntry.selected = true;
    13. }
    14. document.getElementById("gemarkung").options[document.getElementById("gemarkung").length] = newEntry;
    15. }
    16. // Aktivieren des Auswahlbox
    17. if (document.getElementById("gemarkung").length <= 1) {
    18. document.getElementById("gemarkung").disabled = true;
    19. }
    20. else {
    21. document.getElementById("gemarkung").disabled = false;
    22. }
    23. }
    24. }
    Alles anzeigen

    Quellcode

    1. // Funktion um den AJAX-Aufruf zu starten
    2. function getGemarkungen(selectedGemarkung) {
    3. alert(selectedGemarkung);
    4. httpObject = getHTTPObject();
    5. // Wenn das AJAx-Objekt angelegt werden konnte
    6. if (httpObject != null) {
    7. httpObject.open("GET", "getGemarkungen.php?gemeindeID=" + document.getElementById("gemeinde").options[document.getElementById("gemeinde").selectedIndex].value, true);
    8. httpObject.send(null);
    9. httpObject.onreadystatechange = (function(){return function(){setOutput(selectedGemarkung);};})();
    10. }
    11. }
    Alles anzeigen


    Meiner Meinung nach liegt das Problem in dieser Zeile:

    Quellcode

    1. httpObject.onreadystatechange = (function(){return function(){setOutput(selectedGemarkung);};})();


    Die beiden Alerts hab ich zum Testen eingebaut - Im Firefox und Opera werden beide korrekt aufgerufen und im Internet Explorer nur beide korrekt wenn ein leerer String übergeben wird, ansonsten nur der in getGemarkungen


    Hier noch meine Aufrufe der Funktion:

    Quellcode

    1. <select id="gemeinde" name="gemeinde" style="width:236px" onchange="getGemarkungen('');">

    PHP-Quellcode

    1. <body onload="hideKeinJavaScript(); getGemarkungen('<?php session_start(); echo $_SESSION["gemarkungName"]; ?>'); wechsel_lage();">