[jQuery] funktion aus normalem ready-block von geladener ajax datei aufrufen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von encud, 6. Oktober 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 6. Oktober 2010
    Hallo Zusammen!
    fands gerade etwas schwierig den passenden titel zu finden, hier die genau beschreibung:

    ich hab im header meiner seite etwa einen solchen code:
    HTML:
    $(document).ready(function(){
     function ajaxGet() {
     if(bla == bla) blabla;
     [...]
     $.get("ajax.php",
     {
     bla: bla
     }, function(data){
     $(div).html(data);
     });
     }
     $("#id").click(ajaxGet);
    });
    nun wird die datei nachgeladen, in dieser datei soll nun bei einem bestimmten event wieder die ajaxGet-Funktion aufgerufen werden, also:

    HTML:
    $(document).ready(function(){
     $("#id2").click(ajaxGet);
    });
    funktioniert leider nicht, die fehlerconsole von ff sagt: event not defined!

    Hat wer ne ahnung wie sowas umsetzbar ist?

    Gruß
     
  2. 6. Oktober 2010
    AW: [jQuery] funktion aus normalem ready-block von geladener ajax datei aufrufen

    Code:
    $(document).ready
    is schon vorbei.

    du kannst den code einfach mit nem delay von einer millisekunde ausführen.

    Code:
    window.setTimeout(function() { 
     $("#id2").click(ajaxGet);
    }, 1);
    F: warum funktioniert das?
    A: timeouts werden erst ausgeführt wenn es sonst nichts zu tun gibt (idle)
     
  3. 7. Oktober 2010
    AW: [jQuery] funktion aus normalem ready-block von geladener ajax datei aufrufen

    hmm was würde denn das timeout an dieser stelle dann überhaupt für einen sinn machen, könnte man es dann nicht auch ganz ohne versuchen?!

    wie dem auch sei, ich habs ausprobiert und klappt trotzdem nicht. ff zeigt den selben fehler.
    ich hab auch mal ausprobiert im selben dokument, ohne ajax, 2 verschiedene ready blöcke zu machen (per include), beide javascripte funktionieren, nur kann ich von einem ready-block nicht die funktionen vom anderen aufrufen
     
  4. 7. Oktober 2010
    AW: [jQuery] funktion aus normalem ready-block von geladener ajax datei aufrufen

    ach wegen "function ajaxGet() {" ?
    ja das geht nicht, denn funktionen sind (anders als in php) an den aktuellen kontext gebunden (wie alle anderen variablen auch).
     
  5. 7. Oktober 2010
    AW: [jQuery] funktion aus normalem ready-block von geladener ajax datei aufrufen

    hmmm, also besteht für mich nur die möglichkeit, das ganze als datei abzuspeichern und dann immer zu includieren, wenn ichs brauche. Seh ich das richtig?
     
  6. 7. Oktober 2010
    AW: [jQuery] funktion aus normalem ready-block von geladener ajax datei aufrufen

    Erstell doch eine funktion, die du nach erfolgreichem AJAX-Request manuell aufrufst:

    Damit du ajaxGet aufrufen kannst, muss es auch global definiert sein.
    Code:
    var xyzEvent = function() {
     //Test wird innerhalb der Funktion deklariert!
     function test() {
     alert('Test');
     }
     test();
    };
    //Bis hierhin kein Problem...
    //... Aber hier kommt der Fehler, weil test() außerhalb der Funktion (xyzEvent) unbekannt also undefined ist:
    test();
    
    Wenn du willst, dass der EventHandler gesetzt wird, nachdem der Ajax-Request erfolgreich war, dann führe den Code doch einfach im succes-Callback auf:
    Code:
    function ajaxSuccess(data) {
     $('#div').html(data);
     if (this && this.id) {
     if (this.id == 'id') {
     $('#id2').click(ajaxGet);
     alert('Aufruf durch Klick auf Element mit ID "id"');
     } else if (this.id == 'id2') {
     alert('Aufruf durch Klick auf Element mit ID "id2"');
     } else if (this.id == 'wasanderes') {
     alert('Aufruf durch Klick auf Element mit ID "wasanderes"');
     }
     }
    }
    
    function ajaxGet() {
     $.ajax({
     url: 'ajax.html',
     context: this,
     data: {
     bla: 'bla'
     },
     success: ajaxSuccess
     });
    }
    
    $(document).ready(function (){
     $('#id').click(ajaxGet);
    });
    oder einfacher:
    Code:
    function ajaxSuccess(data) {
     $('#div').html(data);
     documentReady();
    }
    
    function ajaxGet() {
     $.ajax({
     url: 'ajax.html',
     data: {
     bla: 'bla'
     },
     success: ajaxSuccess
     });
    }
    
    function documentReady() {
     $('#id').unbind().bind('click',ajaxGet);
     $('#id2').unbind().bind('click',ajaxGet);
     $('#id3').unbind().bind('click',ajaxGet);
     //...
    }
    
    $(document).ready(documentReady);
     
  7. 8. Oktober 2010
    AW: [jQuery] funktion aus normalem ready-block von geladener ajax datei aufrufen

    geniale idee, nach langem hin und her an meinem script funktioniert es jetzt

    vielen dank
    gruß
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.