Rene: eval funktioniert nicht im IE (AJAX, JAVASCRIPT, PHP)

Hi,
ich bastle gerade an einer Site für einen Kunden. Dieser möchte unbedingt eine Slideshow für seine Bilder. Im Firefox funktioniert das schon ganz gut, im IE kommt aber die Fehlermeldung "Das Objekt unterstützt diese Eigenschaft oder Methode nicht" (siehe angegebene URL).

Zur Funktion der Slideshow:

Bei Klick auf einen Link, z. B. "Fotos der Wohnung 1" werden die entsprechenden Bilder nachgeladen. Das geschieht mittels AJAX (auch wenn das jetzt wahrscheinlich nicht richtig ausgedrückt ist, aber egal): eine PHP-Datei liest die Dateien aus einem Verzeichnis und  macht daraus einen entsprechenden HTML-Text. Dieser HTMl-Text wird an die Callback-Funktion, also die Javascript-Funktion, die den HTML-Text weiterverarbeitet, in Textform weitergegeben:

fshow_pics(http_request.responseText);

Die Callback-Funktion sieht wie folgt aus

// zeigt die Bilder einer Unterkunft an
function fshow_pics(str){
 //alert(str);
 fwait('');
 eval(str);
 document.getElementById('div_gallery').style.display = "inline";
 window.setTimeout('start_slideshow()',1000);
}

Und in dieser Funktion tritt auch der Fehler auf. Und zwar in der Zeile mit "eval(str)".

Mit "alert(str)" kann ich mir testweise den HTML-Text anzeigen lassen. Der scheint ok zu sein. "fwait('')" ruft eine andere Funktion auf, die den "Bitte haben Sie einen Moment Geduld"-Text wieder ausblendet, sobald alle Bilder geladen sind. In der nächsten Zeile wird der zurückgegebene HTML-Text in den rechten <div>-Bereich geladen, und die letzte Zeile startet die Slideshow.

Hat der IE etwas gegen eval(), oder benutze ich es nur falsch?

  1. hi,

    Und in dieser Funktion tritt auch der Fehler auf. Und zwar in der Zeile mit "eval(str)".

    Mit "alert(str)" kann ich mir testweise den HTML-Text anzeigen lassen. Der scheint ok zu sein.

    eval wertet Javascript-Code aus - und du willst es mit HTML füttern?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hi,

      Und in dieser Funktion tritt auch der Fehler auf. Und zwar in der Zeile mit "eval(str)".

      Mit "alert(str)" kann ich mir testweise den HTML-Text anzeigen lassen. Der scheint ok zu sein.

      eval wertet Javascript-Code aus - und du willst es mit HTML füttern?

      gruß,
      wahsaga

      Hi,
      ich habe mich wohl etwas ungenau ausgedrückt. Aber dank deiner Antwort habe ich mir den "Javascript-Code", der auch den HTML-Text als Wert einer Variablen enthält, nochmal genau angeschaut. Und der Fehler lag daran, dass ich

      div_fotos = document.getElementById('div_fotos');

      im Javascript-Code stehen hatte. Das sollte man nicht tun sowas ;-)

      Danke nochmal für die Hilfe!

  2. Hat der IE etwas gegen eval(), oder benutze ich es nur falsch?

    zweiteres.
    Du kannst davon ausgehen, dass in 99% der Fälle in denen eval() in Javascript zum Einsatz kommt es unnötig oder falsch ist.

    In deinem Falles läßt sich nicht sagen wie es richtig gehen würde, da wir den Inhakt von str nicht kennen.

    Struppi.

    --
    Javascript ist toll (Perl auch!)