Verwendung von Javascript in einer per Ajax erzeugten Seite

  • Hallo,


    per ajax lade ich in ein div eine Seite...funktioniert auch alles. In dieser Seite möchte ich nun wieder javascript benutzen. jedoch funktioniert das nicht. wenn ich in der erzeugten seite nur ein alert('hallo') reinschreibe, dann wird mir das nicht angezeigt. warum funktioniert das so nicht?

  • ich benutze mootools... hab mir dort nur mal ein demo angesehen



    in der blabla.html steht u.a. drin:

    Code
    1. <script type="text/javascript">
    2. alert('hallo');
    3. </script>


    ich bekomme aber kein alert fenster angezeigt. auch nicht wenn ich window.addevent('domready',function(){
    alert('hallo');
    })


    benutze.

  • Hallo Ingo,


    ganz klappt es doch noch nicht... vielleicht könntest du mir nochmal einen Rat geben. Die in der jsonservice.php erzeugten Links, sollten beim überfahren eine alert-box auslösen, jedoch klappt das leider nicht.hier mal meine Dateien:



    jsonservice.php

  • das das überhaupt klappt ist ein Wunder, was Du da in jsonservice machst ist ja abenteuerlich.


    mach in json eine methode:


    Code
    1. bla: function() {
    2. var a = $$('.bla');
    3. a.each(function(el){
    4. el.addEvent('mouseenter',function(){
    5. alert('klappt');
    6. })
    7. }),


    und ruf die in onComplete auf.

  • hi steffen,


    das war auch nur ein test. hatte ein tut gefunden und es etwas verändert.


    deine möglichkeit funktioniert.... mein problem, ich möchte die tooltips von mootols benutzen. wenn ich die auf das mouseenter-event anwenden will, dann wird beim ersten drüberfahren nix angezeigt. erst wenn ich erneut über den link gehe klappt es. ich weiss nicht ob es damit zusammenhängt, das innerhalb der tooltips schon das event mouseenter benutzt wird.

  • ok... jetzt geht alles.


    habe für onComplete eine function, die diese Tooltips anzeigt. Leider geht es nur im FF und nicht im IE6 oder IE7. ich habe ja nur das plugin aus mootools eingebunden.


    als fehler kommt immer bezeichner, zeichenfolge oder zahl erwartet...

  • hallo Steffen,


    du hattest ja vorhin geschrieben, das es ein wunder ist, das das alles klappt, wasi n der jsonservice.php drin steht. wie wäre es denn besser? bzw. wie löst man solche dinge, wie das mit dem link? ich will ja nach dem ajax-request die id mit einem link ersetzen.

  • naja, ohne Dir jetzt ein komplettes Script zu liefern:


    Du solltest es besser strukturieren. D.h. bau Dir Objekte / Klassen. Dann machst Du eine window.addEvent('domready',RegisterObject); In diesem Register.Object hast Du all Deine Eventlistener drin.
    Das hat den Vorteil, das Du nach Aktualisierung die Funktion aufrufen kannst und alle Listener wieder initialisiert sind.


    onclick="..." sollte man grundsätzlich vermeiden, dafür gibts ja die Eventlistener.


    Schau mal in meinen Prototype Workshop, da wird es so gemacht (Prinzip ist das gleiche).


    In Deiner jsonservice.php gibts einige Fragezeichen, was soll
    $jsonRequest = $json->decode(file_get_contents('php://input')); ? Ich seh nicht das Du irgendwo was übergibst.
    In dem nächsten beitrag im Workshop geh ich auf JSON-Techniken ein, das könnter Dir helfen.

  • dann freu ich mich schon auf die JSON-Techniken... dein Workshop ist gut verständlich, ist ja bei mootools fast alles genauso...


    was mich aber doch schon mal interessieren würde, ist das ajax-update und json. ich habe ein div und möchte nach dem update nicht einfach nur einen wert da reinschreiben, sondern einen link... könntest du mir da kurz weiterhelfen? ich will kein komplettes script, aber ich finde auch im netzt nicht so wirklich viel dazu

  • ich bekomm ja mit JSON einen einfachen string zurück...
    in meinem ersten beitrag hatte ich ja in diesen string schon html-code reingeschrieben, damit mir ein link angezeigt wird.


    nun wollte ich wissen, ob man das auch besser machen kann. ich hatte angenommen du meintest das, als du geschrieben hast, das es abenteuerlich ist was ich mache :-)

  • das war auch erstmal nur ein kleiner versuch. später sollen ja schon daten aus der DB gelesen und angezeigt werden... es gibt dann für jede spalte eine id, die dann mit dem wert aus dem JSON-String ersetzt wird.


    nun frage ich mich nur, wenn man z.Bsp. einen link erzeugen will, ob man dann das HTML schon mit in diesen String schreibt, oder diesen dann z. B. erst später erzeugt mit Javascript. gibt ja da in den framworks verschiedene funktionen dafür (mootools: setHTML)

  • JSON wird eher dann benutzt wenn man viele Einzelelemente updaten will. Dann kann man mit Arrays und Templates arbeiten.
    Wenn man ein Div updaten will, mache ich auch das HTML komplett in php und übergebe das, ist performanter. Nur in speziellen Fällen, wenn z.B. Teile einer Tabelle upgedated werden soll, greif ich auf JSON zurück.


    setHTML ist nichts anderes als ein Synonym für update (prototype), die Methoden sind alle sehr ähnlich, schliesslich ist Prototyp das Vorbild für die meisten Frameworks.

  • JSON wird eher dann benutzt wenn man viele Einzelelemente updaten will. Dann kann man mit Arrays und Templates arbeiten.
    Wenn man ein Div updaten will, mache ich auch das HTML komplett in php und übergebe das, ist performanter. Nur in speziellen Fällen, wenn z.B. Teile einer Tabelle upgedated werden soll, greif ich auf JSON zurück.


    genau das möchte ich auch machen... teile einer tabelle sollen upgedatet werden. bisher habe ich nämlich die tabelle als komplettes html zurückgegeben, was mittels php erzeugt wurde.
    In einzelnen tabellenzellen sollen dann auch ein paar links stehen. Vor dem Update ist die Zelle leer und danach mit Link... wie macht man das denn am besten?