Dynamische Links

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

  • Dynamische Links

    Hallo,

    ich hab ein Problem mit der verlinkung. Und zwar lade ich eine PHP Seite via AJAX in einen Content Bereich. Diese PHP Seite liest schließlich aus einer TXT Datei einige Attribute aus und stellt sie Tabellarisch da.
    Hier ein Code-Ausschnitt:

    Quellcode

    1. <?php[...]
    2. while($zeile = fgets($file, 1000)) {
    3. $arr = explode(",", $zeile);
    4. $result .= "<tr><td>$arr[0]</td> <td>$arr[1]</td> <td>$arr[2]</td><td><a onclick='bilder_detail($arr[2])' href='#'>Klick Mich</a></td></tr>";
    5. $zaehler = TRUE;
    6. }
    7. [...]
    8. echo $result;
    9. ?>


    onclick='bilder_detail($arr[2])

    ist eine Funktoin, die via JavaScript ausgeführt werden soll. Ihr soll eine URL übergeben werden ($arr[3]) und schließlich soll via AJAX ein weiteres PHP Script in den Content Bereich geladen werden. Dieses PHP Script bekommt über einen GET die URL ($arr[3]) übergeben.

    Problem ist nun aber, dass ich aus einem PHP Script kein onclick='' aufrufen kann. Kann mir da jemand abhilfe schaffen?
  • wie meinst du das? das php kann kein onclick ausführen...
    was auf browserseite ankommt ist doch sowieso html

    also via ajax lädst du den inhalt eines php scriptes
    in dem inhalt des scriptes steht irgendwo etwas mit onclick
    man kann auch ajax scripte aufrufen, die jeweils weitere ajax scripte aufrufen - absolut kein problem...

    aber da ich nach deinen bisherigen Postings zu urteilen glaube, dass du das alles weißt, nehme ich an, dass ich da irgendwas falsch verstanden habe :?
  • Also es wird eine Tabelle erstellst. Diese ist dynamisch angepasst an einer Textdatei. Es wird pro Eintrag in diese Textdatei, ein weiterer Eintrag in die Tabelle gemacht. Nun ist ein Attribut der Tabelle jeweils ein Link, auf diesen Link will ich dann klicken um ein weiteres PHP Script in den Content zu laden.
    Nur leider funktioniert das Ganze nicht so, wie ich mir das vorstelle, denn der onclick="" wird einfach nicht interpretiert.

    Der Aufbau der onclick="" Funktion ist wie gesagt, wieder dynamisch erstellt.
    Siehe hier:

    Quellcode

    1. <a onclick='bilder_detail($arr[2])' href='#'>Klick Mich</a>


    Dieses Attribut $arr[2] ist also die Adresse des nächsten Contents das geladen werden soll.
    Die Funktion bilder_detail() ist dann dafür zuständig, den bestimmten Bereich via AJAX zu laden.
  • Also,

    ich nutze das prototype Framework.
    Lade damit in einen Content Bereicht ein PHP Script ein:

    Quellcode

    1. case 'nav6':
    2. new Ajax.Updater('content_content', 'inc/bilder.php', {asynchronous:true});
    3. break;


    Das PHP Script, welches geladen wird, liest Einträge aus einer Textdatei (Datenbank ist mir für das kleine Projekt zu übertrieben und ne TXT File zu lesen, geht um einiges schneller)
    Die Textdatei hat z.B. folgende Einträge:

    backgrounds,submitter,datum,images/backgrounds/
    Party0,submitter,datum,images/Party0/


    Pro zeilen Eintrag wird nun in einer Tabelle eine Zeile erstellt, wobei am Ende ein Link ist, der auf onclick='' reagieren soll. Tut es aber nicht. Hier der Code des PHP Scripts:

    PHP-Quellcode

    1. <?php
    2. $result = "
    3. <h2>Bilder</h2><br/><br/>
    4. <table align='center'><tr class='head'><th>Bezeichnung</th><th>Datum</th><th>Submitter</th><th>Link</th></tr>
    5. ";
    6. $file = fopen("bilder.txt","r");
    7. $zaehler = FALSE;
    8. while($zeile = fgets($file, 1000)) {
    9. $arr = explode(",", $zeile);
    10. if ( $zaehler == FALSE )
    11. {
    12. $result .= "<tr class='gerade'><td>$arr[0]</td> <td>$arr[1]</td> <td>$arr[2]</td><td><a onclick='bilder_detail($arr[2])' href='#'>Klick Mich</a></td></tr>";
    13. $zaehler = TRUE;
    14. }
    15. else if ( $zaehler == TRUE)
    16. {
    17. $result .= "<tr class='ungerade'><td>$arr[0]</td> <td>$arr[1]</td> <td>$arr[2]</td><td><a onclick='bilder_detail($arr[2])' href='#'>Klick Mich</a></td></tr>";
    18. $zaehler = FALSE;
    19. }
    20. }
    21. $result .= "</table>";
    22. echo $result;
    23. ?>
    Alles anzeigen


    Das mit dem Zähler kann ignoriert werden, es dient nur dazu, dass die Tabelle unterschiedliche Farben hat. Wichtig ist eigentlich nur diese Zeile:

    Quellcode

    1. $result .= "<tr class='gerade'><td>$arr[0]</td> <td>$arr[1]</td> <td>$arr[2]</td><td><a onclick='bilder_detail($arr[2])' href='#'>Klick Mich</a></td></tr>";


    Ziel ist es anschließend, via AJAX ein weiteres Script zu laden, welches mittels GET $arr[2] mitgeliefert bekommt. Das folgende Script soll dann halt die Bilder in dem Verzeichnis ($arr[2]) auflisten.


    Wie gesagt: Es scheitert halt daran, dass der onclick nicht funktioniert.
  • Hm, also wie es scheint, ist es nicht möglich, aus einem PHP Script heraus JS auszuführen. Selbst wenn ich die Tabelle Statisch mit PHP designe und ausgeben lasse, wird kein JS interpretiert. Hab mal etwas gegoogle't und ich hab kuriose Lösungen gefunden wie den JS Code mit einem echo(); ausgeben zu lassen. Klappte natürlich genauso wenig.

    /€1:
    Hm, grade mal eine einfache HTML Seite programmiert und mit JS einen kleinen Test gemacht. Und zwar sollte, sobald die Seite geladen wurde, ein alert() ausgegeben werden.
    Insgesamt ist es komplett in die HOse gegangen.

    These: Seiten, die mit dem xmlhttprequest Objekt geladen wurden, interpretieren keinen JavaScript mehr.
  • gegenbeweis:

    Quellcode

    1. <html>
    2. <head><title>Ajax Test</title>
    3. <script type="text/javascript">
    4. <!--
    5. function ajax()
    6. {
    7. try {
    8. req = window.XMLHttpRequest?new XMLHttpRequest():
    9. new ActiveXObject("Microsoft.XMLHTTP");
    10. } catch (e) {
    11. //Kein AJAX Support
    12. }
    13. req.onreadystatechange = function() {
    14. if ((req.readyState == 4) && (req.status == 200))
    15. document.getElementById('content').innerHTML = req.responseText;
    16. }
    17. req.open('GET', 'link.html');
    18. req.send(null);
    19. }
    20. function func2() {
    21. alert('test');
    22. }
    23. //-->
    24. </script>
    25. </head>
    26. <body onload="ajax()">
    27. <span id="content"></span>
    28. </body>
    29. </html>
    Alles anzeigen


    link.html

    Quellcode

    1. <a href="#" onclick="func2()">test</a>