AJAX IE 6 Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • AJAX IE 6 Problem

    Hallo,

    ich habe ein Problem mit dem IE 6 und zwar verwende ich Ajax

    mit folgendem Script:

    PHP-Code:
    function addZutatenRequest(url
    {
      
    var 
    productnr url.split("|");
    var 
    productId productnr[1]+"|"+productnr[3]+"|"+productnr[5]+"|"+productnr[7]+"|"+productnr[9];
    addToBasket(productId);
    url productnr[0]+productnr[1]+productnr[2]+productnr[3]+productnr[4]+productnr[5]+productnr[6]+productnr[7]+productnr[8]+productnr[9]+productnr[10];
        
    http_request false;

        if (
    window.XMLHttpRequest) { // Mozilla, Safari,...
            
    http_request = new XMLHttpRequest();
            if (
    http_request.overrideMimeType) {
                
    http_request.overrideMimeType(\'text/xml\');
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert(\'Ende :( Kann keine XMLHTTP-Instanz erzeugen\');
            return false;
        }
        http_request.onreadystatechange = alertInhaltAddZutaten;
        http_request.open(\'GET\', url, true);
        http_request.send(null);

    }

    function alertInhaltAddZutaten() {

        if (http_request.readyState == 4) {
              //  alert(http_request.responseText);

    document.getElementById("zutaten_block").innerHTML = http_request.responseText;

        }


    Mit Firefox + IE 7 läuft alles wie es soll, der IE 6 bringt folgende Meldung:

    Zeile: 197
    Zeichen: 19
    Fehler: 'return'-Anweisung außerhalb einer Funktion
    Code: 0
    URL: ....

    Zeile 197 ist die hier
    PHP-Code:
    } catch (e) { 
    Zeichen: 19 ist "{"

    Habe auch schon
    PHP-Code:
    if (!XMLHttpRequest) {
      
    window.XMLHttpRequest = function() {
        return new 
    ActiveXObject('Microsoft.XMLHTTP');
      }

    von hier

    ich weis es ist für prototype, aber einen versuch war es wert.

    Ich habe auch jquery im Einsatz


    Woran kann es liegen, dass der IE 6 mal wieder zickt.

    gruß Speeedy018

  • #2
    Re: AJAX IE 6 Problem

    Diesen ganzen try-catch-Bloedsinn wuerde ich ganz weglassen.

    Auf mehrere Versionen von Mircosofts ActiveX XMLHTTP-Objekt zu pruefen, ist unnoetig - es wird m.W. immer die aktuellste verwendet, wenn man die zweite Notation zur Erzeugung nutzt. (Und selbst wenn dem nicht so waere - welchen Unterschied wuerden wir denn ueberhaupt merken ...?)

    Ich wuerde einfach den Ansatz nutzen: http://design-noir.de/webdev/JS/XMLHttpRequest-IE/
    Dann kann man anschliessend das (bzw. "ein") XMLHttpRequest-Objekt auch im IE < 7 ganz normal instantiieren, ohne an der Stelle noch ueber mehrere Zeilen Fallunterscheidungen reinpfriemeln zu muessen.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Danke für die schnelle Antwort,

      habe ich gerade mal probiert,

      PHP-Code:
      function addZutatenRequest(url
      {
        
      var 
      productnr url.split("|");
      var 
      productId productnr[1]+"|"+productnr[3]+"|"+productnr[5]+"|"+productnr[7]+"|"+productnr[9];
      addToBasket(productId);
      url productnr[0]+productnr[1]+productnr[2]+productnr[3]+productnr[4]+productnr[5]+productnr[6]+productnr[7]+productnr[8]+productnr[9]+productnr[10];


              if (!
      window.XMLHttpRequest)
          
      window.XMLHttpRequest = function() { return new ActiveXObject(\'Microsoft.XMLHTTP\') }

          if (!http_request) {
              alert(\'Ende :( Kann keine XMLHTTP-Instanz erzeugen\');
              return false;
          }
          http_request.onreadystatechange = alertInhaltAddZutaten;
          http_request.open(\'GET\', url, true);
          http_request.send(null);


      Jetzt kommt der selbe Fehler in einer anderen Zeile (logisch),
      allerdings ist die Zeile die er diesmal anmeckert
      die hier:
      var productnr = url.split("|");
      was passt den da mit einem return nicht ?
      gruß speedy018

      Kommentar


      • #4
        Original geschrieben von speeedy018
        habe ich gerade mal probiert,
        Aber unsinnig. Du solltest es so uebernehmen, wie's da steht. Und es mit in die Funktion zu packen, ist auch nicht sinnvoll - ich schrieb doch, solche Fallunterscheidungen an der Stelle sollte man vermeiden, wenn es geht.

        Jetzt kommt der selbe Fehler in einer anderen Zeile (logisch)
        Das ist so kaum nachvollziehbar.

        Der IE meldet den Fehler oft nicht in der richtigen Zeile.
        Insb. ob der Code im Dokument eingebunden ist oder in einer externen Ressource, kann da unterschiedliche Angaben hervorrufen.

        Ein komplettes Beispiel waere evtl. hilfreicher; allerdings habe ich keinen nativen IE 6 mehr zu Pruefen des Sachverhaltes.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Könntest du bitte eine Version online stellen, die alles beinhaltet, was benötigt wird?
          Schon mal den IE Debugger ausprobiert? Der ist für ein Microsoft- Produkt noch erstaunlich gut...

          Kommentar


          • #6
            Aber unsinnig. Du solltest es so uebernehmen, wie's da steht. Und es mit in die Funktion zu packen, ist auch nicht sinnvoll - ich schrieb doch, solche Fallunterscheidungen an der Stelle sollte man vermeiden, wenn es geht.
            Das war der ausschlaggebende Satz !

            Habe das Script ausserhalb der Funktion platziert und siehe da, der IE 6+ und auch der Firefox machen alles wie es sein soll.

            Vielen Vielen Vielen Dank



            Speeedy018

            Kommentar


            • #7
              Coole Sache @ wahsaga

              ...
              PHP-Code:
              /*@cc_on @if (@_win32 && @_jscript_version >= 5) 
              if (!window.XMLHttpRequest) window.XMLHttpRequest = function() 
              { return new ActiveXObject('Microsoft.XMLHTTP') } @end @*/ 
              ... den ganzen try/catch-Block kann man sich
              damit echt sparen! Die Syntax kannte ich noch nicht, wird hier

              http://www.html-world.de/program/js_14.php


              aber gut beschrieben.

              Dann muss das Script nur vor dem Erzeugen des XMLHTTPRequests plaziert werden!?

              Danke!

              Gruß php_fusel
              Zuletzt geändert von php_fussel; 04.02.2009, 21:34.

              Kommentar

              Lädt...
              X