# durch AJAX div mit Javascript befüllen



## hix84 (24. September 2007)

Hallo,

ich bin gerade dabei mich näher mit Javascript zu befassen. Bei der Programmierung meiner Webseite bin ich dabei leider auf folgendes Problem gestoßen:

Mittels einer AJAX-Funktion (innerHTML) befülle ich ein div mit verschiedenen Inhalten (die Inhalte sind in extra php-Dateien abgelegt). Dies funktioniert mit HTML-Code so weit erst einmal hervorragend. Das Problem tritt aber dann auf, wenn ich ein javascript einfügen möchte. In meinem Fall ist das das (berühmte) Script von wetter.com:


```
<script type="text/javascript" src="http://www.wetter.com/v2/woys2/woys2.js.php?173500,1a689bd73f3c0aa42e4573eaab885591"></script>
```

Wird die Seite ohne AJAX aufgerufen funktioniert das Script auch einwandfrei. Nur eben mit AJAX erscheint eine leere Box...

Ich denke das Problem liegt daran - und bitte verbessert mich, wenn es nicht so ist - dass erst die Seite mit dem Wetterscript geladen wird und dann die Ausgabe durch AJAX erfolgt, so dass das ganze funktioniert müsste es wahrscheinlich andersherum sein?!

Ich bin mit meinem Latein leider völlig am Ende und ich habe keine Ahnung, wie ich das Problem am besten lösen könnte.  Es wäre schön wenn jemand von euch eine Idee dazu hätte.


----------



## Hookah (24. September 2007)

Ich kann dir leider nicht bei deinem Problem helfen aber du bei meinem.

Darf ich mal fragen ob das befüllen des <div> auch im ie bei dir?

Wenn ja dann würd ich dich bitten mir eine pn zu schreiben wie du es machst denn meins funktioniert irgendwie nur im FF

mfG


----------



## Tyg3r (24. September 2007)

@hix84

hast Du mal alert(div.innerHTML); ausgeführt? Könnte nen escape Problem mit den Anführungsstrichen sein.

Natürlich könnte es auch an dem Script liegen welches Du dort aufrufst ...
Denkbar wäre, dass dort ein onload-event nicht korrekt aufgefangen wird.

Also bitte ausschließen, dass sich ein Fehler in deine innerHTML eingeschlichen hat.

Gruß tyg3r


----------



## Sven Mintel (24. September 2007)

ich habe eine gute und eine schlechte Nachricht:

*die schlechte:* nachträglich einem Dokument hinzugefügter JS-Code(so auch die nachträgliche Einbindung des externen Skriptes)...bewirkt nicht, dass selbiger Skriptcode auch ausgeführt wird.

*die gute:* sei froh, dass das Skript nicht ausgeführt wird, denn sonst wäre zwar der Wetterbericht da, der rest der Seite aber weg 

Das Skript von Wetter.com verwendet write(), um HTML-Code auszugeben, und die Anwendung von write() nach dem Lesen des Dokumentes durch den Browser bewirkt bekannterweise das Überschreiben des bisherigen Dokumentinhaltes.


----------



## Tyg3r (24. September 2007)

Korrekt, eventuell kann man nach dem einbinden den Code manuell aufrufen, man müßte sich halt den Code ansehen und den Namen der entspechenden Funktion finden.
Wobei das alles nicht hilft, wenn der Code per write() (so wie Sven Mintel sagt) geschrieben wird. Leider habe ich keine Idee, wie man das write() abfangen könnte und den erzeugten Code nachträglich in dein DIV container unterbringt. Das nicht heist, dass es nicht möglich wäre


----------



## Sven Mintel (24. September 2007)

Rein theoretisch...da ja ohnehin PHP im Einsatz ist:

Man könnte per PHP den Inhalt des Skriptes abholen und verarbeiten(den Inhalt der write()-Anweisungen extrahieren)...und dann direkt weitergeben.

Allerdings weiss ich nicht, ob das den Benutzungsregeln dieses Service entspricht.


----------



## hix84 (25. September 2007)

Vielen Dank für eure schnellen Antworten zum Thema. Das mit document.write hatte ich natürlich nicht bedacht. Ich habe mittlerweile eine Lösung für mich gefunden, die zwar nicht schön ist, aber in meinem Fall doch ganz gut funktioniert:

Ich habe eine einfache Datei wetter.php angelegt in der das javascript liegt:

```
<script type="text/javascript" src="http://www.wetter.com/v2/woys2/woys2.js.php?173500,1a689bd73f3c0aa42e4573eaab885591"></script>
```

In der Datei die ich per AJAX in mein div einbinde habe ich ein iframe angelegt, welches widerum auf die wetter.php verweist:

```
<iframe width="210px" src="wetter.php" scrolling="no" frameborder="0">
</iframe>
```

Das ganze ist wie gesagt nicht sehr schön.

@Hookah: Das mit dem div befüllen funktioniert bei mir im Firefox und im IE. Im Netz gibt es dazu ein schönes Beispiel: http://www.dynamicdrive.com/dynamicindex17/ajaxtabscontent/

Ich hoffe das hilft dir weiter.

Und nochmal Danke für eure Hilfe!


----------



## ophasis (26. September 2007)

Also den iframe solltest du dringlich wieder entfernen, da er ja nicht mehr im "strict" enthalten ist und zu deinem Div Problem kannich dir nur prototype in verbindung mit script.acoul.us empfehlen, ich selbst verwende es hier:

http://www.colored-mind.de/g15/

Der Vorteil liegt auf der Hand, das Script, welches noch vom Coder geschrieben werden muss umfasst keine 10 Zeilen und lässt sich mit parametern simpel auf jeden Link udn jedes Div anwenden, zudem werden die Div ein und ausgeblendet, mit allen script.acoul.us fähigen Animationen.

Bei Bedarf schicke ich dir die Scripte, die bei mir die Div-Effekte bewirken.

mfg
ophasis


----------

