mort: AJAX Javascript wird nicht ausgeführt

Hallo,

ich hab eine php-Datei, die über ein Ajax-Script nachgeladen wird.

Das Problem besteht darin, dass der javascript code der nachgeladenen Datei nicht ausgeführt wird.
Als Beispiel enthält die nachgeladene Datei folgendes:

<script type="text/javascript">
alert('hallo');
</script>

Das alert bekomm ich leider nicht zu gesicht. Ich bin mir aber sicher, dass es funktionieren kann und Scripte in nachgeladenen Dateien automatisch ausgeführt werden können.

Bitte um Hilfe :(

  1. Lieber mort,

    mit AJAX lädt man üblicherweise ein XML-Dokument nach. Dieses liegt dann als XML-DOM in einem Objekt vor und kann mit den üblichen Methoden weiter ausgelesen werden.

    Das Problem besteht darin, dass der javascript code der nachgeladenen Datei nicht ausgeführt wird.

    Dieser Code wird ja auch nicht in den DOM-Baum Deines aktuellen Dokuments eingebaut, oder?

    Als Beispiel enthält die nachgeladene Datei folgendes:

    <script type="text/javascript">
    alert('hallo');
    </script>

    Das kann schon sein, aber dieser Code "sitzt" im XML-Dokument innerhalb Deines AJAX-Objektes. Und dort wird natürlich nichts ausgeführt, da es mit dem aktuellen (X)HTML-Dokument in Deinem Browser nichts zu tun hat.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Hi Felix,

      danke für deine Antwort.
      Der Code würd per innerHTML an einen existieren Div-Container im HTML-Document übergeben.
      Wie veranker ich ihn denn so im DOM-Baum, dass es ausgeführt wird?

      oder hab ich das falsch verstanden?

      1. Lieber mort,

        Der Code würd per innerHTML an einen existieren Div-Container im HTML-Document übergeben.

        probiere es doch mit document.getElementsByTagName("head")[0].appendChild(myScriptElement) und hänge den Script-Bereich in den <head> des Dokuments! Dazu wirst Du wahrscheinlich erst ein <script>-Element erzeugen müssen:

        function insertScriptElement (jsCode) {  
            var s = document.createElement("script");  
            s.type = "text/javascript";  
            s.appendChild(document.createTextNode(jsCode));  
            document.getElementsByTagName("head")[0].appendChild(s);  
        
        

        Wieso sollte er denn auch in einen "Div-Container" geschrieben werden? Willst Du denn da soetwas wie document.write() ausführen lassen? Das halte ich für ganz schlecht...

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. hi,

          danke nochmal für deine hilfe.

          ich hab das script aus dem folgenden Link verwendet:

          http://www.ajax-community.de/loesungen/5560-javscript-funktionsaufruf-ajax-nachgeladen.html

  2. Lösung:

    Man muss die Antwort des Servers (response) mit einem zusätzlichen Javascript nach dem <script>-tag parsen und den inhalt ausführen.

    Die Lösung des folgenden Links funktioniert:

    http://www.ajax-community.de/loesungen/5560-javscript-funktionsaufruf-ajax-nachgeladen.html

    1. Lieber mort,

      Man muss die Antwort des Servers (response) mit einem zusätzlichen Javascript nach dem <script>-tag parsen und den inhalt ausführen.

      diese Lösung ist nicht gut! Du könntest wichtigen Code ersetzen, der noch benötigt wird!

      Liebe Grüße,

      Felix Riesterer.

      --
      ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)