ma_ruff: Per Ajax JavaScript nachladen

Hallo zusammen,

habe bereits nach diesem Thema gegoogelt, bin allerdings nicht wirklich schlau daraus geworden und hoffe das Ihr mir auf die Sprünge helfen könnt.

Nun denn, ich habe meine Index-Seite und lade in diese via Ajax weiteren Code nach. Soweit klappt das ganz gut, nur müsste ich eine Function, welche sich in der Index-Seite befindet, durch den Nachgeladenen Code aufrufen.

Hat hierzu einer eine Idee? Dann her damit. Würd mich freuen wenn es klappen würde.

Danke.
Gruß
Matthias

  1. Liebe(r) ma_ruff,

    ich habe meine Index-Seite und lade in diese via Ajax weiteren Code nach.

    hoffentlich nicht, um damit die Navigation der Seite zu realisieren...

    nur müsste ich eine Function, welche sich in der Index-Seite befindet, durch den Nachgeladenen Code aufrufen.

    Wie wird der nachgeladene Code denn selbst aufgerufen? Wenn der dann abgearbeitet wird, kannst Du doch auf die bereits definierte Funktion zugreifen, oder nicht?

    function nachgeladen() {  
        if (window.meineVorhandeneFunction)  
            meineVorhandeneFunction();  
      
        trallalla(); // weiterer Code  
    }
    

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

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

      hoffentlich nicht, um damit die Navigation der Seite zu realisieren...

      Jein. Ich erstelle eine Seite, in der Aufträge angezeigt werden, zu diesen Aufträge würde ich gerne Panels von Yahoo einbinden in denen Details zum Auftrag angezeigt werden sollen. Um diese Panels zu initialisieren, muss ich aber eine Funktion aufrufen. Diese müsste eben von dem nachgeladenen Code aus aufgerufen werden.

      Wie wird der nachgeladene Code denn selbst aufgerufen? Wenn der dann abgearbeitet wird, kannst Du doch auf die bereits definierte Funktion zugreifen, oder nicht?

      function nachgeladen() {

      if (window.meineVorhandeneFunction)
              meineVorhandeneFunction();

      trallalla(); // weiterer Code
      }

      Beim nachladen wird das JavaScript aber nicht ausgeführt, es steht in Quellcode der Seite, wird aber nicht ausgeführt.  
      
      > Liebe Grüße aus [Ellwangen](http://www.ellwangen.de/),  
      >   
      > Felix Riesterer.  
        
      Gruß Matthias
      
  2. Hi,

    wie fügst Du die nachgeladenen Inhalte den in die Seite ein? Mit innerHTML wirst Du kein Glück haben; wenn Du die Inhalte übers DOM einfügst, klappts. Wichtig für den IE ist in diesem Fall das defer-Attribut im script-Tag.

    Grüße Basti

    1. Hallo Basti,

      wie fügst Du die nachgeladenen Inhalte den in die Seite ein? Mit innerHTML wirst Du kein Glück haben;

      Mach ich aber.

      wenn Du die Inhalte übers DOM einfügst, klappts.

      Und wie mach ich das?

      Wichtig für den IE ist in diesem Fall das defer-Attribut im script-Tag.

      Sorry, aber in JavaScript habe ich noch ein paar Löcher.

      Gruß
      Matthias

      1. Hallo,

        einfügen per DOM:

        du erstellst einen Container:
        var div=document.createElement("div");

        in diesen fügst du das geladene HTML ein
        div.innerHTML=deine_empfangenen_daten_als_text;

        den Container fügst an der entsprechenden Stelle ein, z.B.
        document.body.appendChild(div);

        Damit das im HTML enthaltene JavaScript auch im IE ausgeführt wird, muss im Script-Tag das defer-Attribut stehen, also:
        <script type=... defer="defer">...

        Grüße Basti

  3. Hallo Matthias,

    [..]lade in diese via Ajax weiteren Code nach. [...] nur müsste ich eine Function, welche sich in der Index-Seite befindet, durch den Nachgeladenen Code aufrufen.

    Wenn du ein <script src=...> Tag im Body nachlädst, wird es automatisch ausgeführt, z.B. so:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>

    <title>Example 1</title>

    <script type="text/javascript">//<![CDATA[

    function nachLaden() {

    var oScript = document.createElement("script");
              oScript.src = "example1.js";
              document.body.appendChild(oScript);
            }

    function callback(sText) {
              alert("Geladen von Datei: " + sText);
            }
        //]]>

    </script>
      </head>

    <body> [... dein body Content] </body>

    </html>

    Durch Aufruf der Funktion nachLaden(), wird das Script "example1.js" geladen und meines Wissens sofort nach "appendChild(oScript);" auch ausgeführt. Im Code von "example1.js" kannst du dann z.B. die vorhandene Funktion callback("example1.js") aufrufen.

    So einen callback-Aufruf sollte man bei dieser Art Nachladen ohnehin am Ende immer machen, weil man sonst nicht feststellen kann, wann das nachgeladene Script fertig ausgeführt ist. Die Funktion callback() stellt das dann aber fest.

    Gruß, Don P