Zugriff auf dynamisch erstellten Inhalt klappt nicht

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Zugriff auf dynamisch erstellten Inhalt klappt nicht

    Ich erstelle per PHP einen Inhalt.
    Diese PHP-Seite wird per AJAX eingebunden.

    Ich benutze ein PHP-Framework (cakePHP) und ein Javascript Framework (jquery) - deshalb nicht wundern wenn der Code auf den ersten Blick keinen Sinn ergibt:

    Erstmal der js-Code:

    Quellcode

    1. function manageTab(id, checked) {
    2. if (checked) {
    3. var lastIndex = $("div#tabhead > *").length;
    4. $.post("manageTabs", {id: id, lastIndex: lastIndex}, function(text) {
    5. var anfang = '<div id="tabheader">';
    6. var ende ='</div>';
    7. anfangLaenge = anfang.length;
    8. pos0 = text.indexOf(anfang);
    9. pos1 = text.indexOf(ende, pos0);
    10. text_header = text.substring(pos0 + anfangLaenge, pos1);
    11. entries = $("div#tabhead").html(); /* entspricht: document.getElementById("tabhead").innerHTML */
    12. $("div#tabhead").html(entries + text_tabheader);
    13. });
    14. }
    Alles anzeigen


    Dieser Code funktioniert.
    Es wird die im Anhang gezeigte Seite geliefert.
    Aus dieser wird dann der gewünschte Teil (das div id="tabhead") ausgeschnitten und in das gewünschte div eingefügt.
    Hoffe das ist soweit verständlich.

    Mein Problem ist aber:
    Dieses Rumgepfusche mit dem indexOf und substring würde ich mir ganz gerne ersparen und stattdessen mit

    Quellcode

    1. var expr = $("div#tabhead").html();
    2. alert(expr);

    bzw.

    Quellcode

    1. var expr = document.getElementById("tabhead").innerHTML;
    2. alert(expr);

    arbeiten.
    Nur leider liefert mir weder die jquery-Vorgehensweise noch das pure javascript mir Inhalt?!

    jquery:
    IE: Ausgabe im alert: null
    Firefox: wie oben

    javascript:
    IE: Javascript Fehler: Objekt erforderlich
    Firefox: garnix - Keine Fehlermeldung, passiert aber auch sonst nix
    Bilder
    • ajaxProblem.jpg

      122,72 kB, 997×757, 391 mal angesehen
  • spontan ein paar Ideen:
    Ich sehe kein tablehead, sondern nur tableheader
    das "> *" als spezielle Syntax würde ich durch den Aufruf children() ersetzen.

    Außerdem musst du dir den AJAX-Return nicht zerlegen. Mach einfach ein Jquery Objekt daraus und wende DOM/XPATH Ausdrücke darauf an.

    Beispiel / Eventuelle Lösung:

    Quellcode

    1. $.post("manageTabs", {id: id, lastIndex: $("div#tabheader").children().length}, function(text) {
    2. $("div#tabheader").html($(text).find('div#tabheader').html());
    3. });
  • @dOnut

    Danke für Deine Hilfe!

    Ich sehe kein tablehead, sondern nur tableheader

    Das ist schon OK so. In der Seite der Quelle heipt die id tableheader und in der Seite wo der Inhalt dann rein kommt talbehead.

    Außerdem musst du dir den AJAX-Return nicht zerlegen. Mach einfach ein Jquery Objekt daraus und wende DOM/XPATH Ausdrücke darauf an.

    Das klingt sehr gut. Werds testen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von GetIT ()

  • Ganz oben auf der jQuery Seite gibt es eine wundervolle Suche ;)
    docs.jquery.com/Traversing/find

    jQuery hat ein paar gute Tutorials auf seiner Seite verlinkt:
    docs.jquery.com/Tutorials

    Diese Synatax ...

    Quellcode

    1. $("div#tabheader")

    ... ist frei von dem bzw. den JavaScript Frameworks erfunden und stellt einen einfachen Selektor dar.
  • GetIT schrieb:

    Hi,

    das mit den Selektoren kenn ich.

    Aber den Ausdruck

    $(text)

    kenn ich nicht und den finde ich auch nicht mit der Suche.


    Jetzt verstehe ich dich.

    text ist eine variable wie du bei function(text) siehst.
    Da steht dann das entsprechende Element drin.

    Quellcode

    1. $.post("manageTabs", {id: id, lastIndex: $("div#tabheader").children().length}, function(text) {
    2. $("div#tabheader").html($(text).find('div#tabheader').html());
    3. });