Beiträge von Sempervivum

    Du verwendest ja Bootstrap und das macht es schon mit Javascript.
    Ich habe das Ganze mal auf das Wesentliche reduziert und ein Demo gemacht, dort kannst Du ablesen, wie die Übergabe über ein data-Attribut funktioniert:

    Wenn Du es mit PHP machen möchtest, so ist das auch möglich, indem Du für jede Nachricht ein eigenes Modal definierst und über dessen ID und data-target jeweils das richtige öffnest, so wie ich es ebenfalls in dem vorigen Thread beschrieben hatte.

    Der Sachverhalt ist noch der gleiche wie in dem vorigen Thread: Da das Modal durch Javascript geöffnet wird, kann die Übergabe der Daten auch nur durch Javascript erfolgen, jedenfalls wenn Du nur ein Modal für alle Texte haben willst. Die Lösung auf PHP-Seite zu suchen, führt nicht zum Ziel, wie man an der ergebnislosen Diskussion dort sieht. Und die Lösung ist ebenfalls die selbe, die ich schon in dem vorigen Thread gepostet habe:

    https://getbootstrap.com/docs/3.3/javascript/

    Offenbar unterstützt der IE 11 die kurze Notation für das forEach nicht:

    Code
    data.items.forEach(item => {

    Verwendet man die althergebrachte funktioniert es:

    Code
    data.items.forEach(function(item) {

    html-seminar.de/woltlab/attachment/1636/

    Ein guter Editor und sinnvolles Einrücken bringen es an den Tag:

    Da wo das beanstandete Semikolon steht muss ein Komma hin.

    Weil dein Code nicht eingerückt war, habe ich mich offenbar getäuscht: Die weitere Bearbeitung steht offenbar doch im success-Callback.

    Jetzt musst Du die Definiton von gItem vor das forEach schieben:

    Code
                    console.log(data);
                    var gItem = '';
                    data.items.forEach(item => {
                        console.log(item.title, item.link, item.enclosure.link);
                                    
                          var itemTitle = item.title.text;
                          var itemLink = item.link;
                          var itemImage = item.enclosure.link;

    Zwei Probleme sehe ich auf Anhieb:

    1. Die Variable gItem ist lokal innerhalb der forEach-Schleife definiert. Daher ist sie außerhalb der Schleife nicht sichtbar und ein Zugriff würde einen "undefined"-Fehler liefern.
    2. Selbst wenn Du die Variable gItem global definieren würdest, würde es nicht funktionieren, weil Ajax asynchron arbeitet: Die Anfrage wird an den Server gesendet, etwas später trifft die Antwort mit den Daten ein. Greifst Du jetzt auf das Ergebnis direkt im Anschluss an den Ajax-Aufruf zu, so ist die Antwort vom Server noch nicht da und die Inhalte in der Variablen nicht vorbesetzt.

    Lösung: Alles was die Variable gItem mit Inhalt benötigt, ebenfalls im success-Callback erledigen. Wenn dir der Code dann zu unübersichtlich wird, kannst Du die Aktionen in eine Funktion schreiben und diese als Callback-Funktion übergeben.

    Dies:

    Code
    var itemTitle = $(this).find('title').text();

    ist bei einem Objekt viel einfacher:

    Code
    var itemTitle = item.title;

    Vorausgesetzt, Du benutzt die forEach-Schleife wie in meinem vorigen Posting.

    Auf die Weise kannst Du auf alle Bestandteile des Feed zugreifen und dein HTML generieren.

    Wenn Du als dataType json angibst, dekodiert jQuery das JSON und übergibt ein Objekt an den success-Callback, aus dem Du die Bestandteile ganz leicht auslesen kannst:

    Code
                success: function (data) {
                    console.log(data);
                    data.items.forEach(item => {
                        console.log(item.title, item.link, item.content, item.description);
                    });
                }
    Zitat

    1 Modal für alle User.

    Deswegen habe ich dem Button auch die Value mit der UserID mitgegeben

    Da es nur ein Modal ist, habe ich wohl etwas grundsätzlich missverstanden. Dann muss natürlich der Wert des data-target immer gleich mit der ID des Modals sein.
    Allerdings verstehe ich nicht, wie über das value-Attribut der Inhalt des Modals dynamisch geändert werden soll? Ich würde eher empfehlen, das Verfahren einzusetzen, das hier beschrieben wird:
    https://getbootstrap.com/docs/3.3/javascript/

    Die Verbindung zwischen dem auslösenden Knopf und dem Modal wird durch das Attribut data-target hergestellt. Dieses definierst Du statisch so:

    Code
    data-target='#defaultModal'

    Du musst dieses Attribut benutzerspezifisch definieren, anbieten würde sich die User-ID, etwas so:

    PHP
    data-target="modal-<?php echo $value['userId'] ?>"

    Und natürlich dem Modal die korrespondierde ID geben:

    PHP
    <div class="modal fade" id="modal-<?php echo $value['userId'] ?>" tabindex="-1" role="dialog">

    In einem nächsten Schritt könntest Du das Ganze noch etwas kompakter machen, indem Du das Modal nur einmal definierst und die variablen Parameter mit Javascript einträgst:
    https://getbootstrap.com/docs/3.3/javascript/

    (nach whatever suchen)