Jörg: Jquery Checkboxen auslesen und daraus einen dynamischen Link generieren

Hallo,

ich nutze eine Lightbox, die ich nicht über einen Button ansteuern kann. Da ich im Gesamtkonstrukt meiner Anwendung diese Lightbox nutze und beim Versand von Emails über einen Link per Iframe ein Script in diese Lightbox lade, möchte ich das bei der aktuellen Problemstellung auch so machen.

Eigentlich werden auf der zur Debatte stehenden Seite Checkboxen angehakt und normalerweise würde ich die angehakten Werte über ein Formular ans Empfängerscript schicken.

Um aber die Lightbox hier auch nutzen zu können, fallen mir nur 2 Lösungen ein:

  1. Per Jquery die Checkboxen bei Klick auf den Button auslesen und daraus einen dynamischen Link generieren, der dann per JS geklickt wird.

  2. Seite per Formular an sich selber als Empfängerscript senden und über JS einen Fakeklick auf einen aus den Formulardaten generierten Link machen.

Sehe ich das korrekt?

Jörg

  1. Hi there,

    ich nutze eine Lightbox, die ich nicht über einen Button ansteuern kann. Da ich im Gesamtkonstrukt meiner Anwendung diese Lightbox nutze und beim Versand von Emails über einen Link per Iframe ein Script in diese Lightbox lade, möchte ich das bei der aktuellen Problemstellung auch so machen.

    Ich hab keine Ahnung, was Du da machst (Lightbox ist ein uralt-Skript zum Anzeigen von Bildern), zumal Du Dich ja zur "Problemstellung" eigentlich nicht äusserst, aber -

    Eigentlich werden auf der zur Debatte stehenden Seite Checkboxen angehakt und normalerweise würde ich die angehakten Werte über ein Formular ans Empfängerscript schicken.

    Um aber die Lightbox hier auch nutzen zu können, fallen mir nur 2 Lösungen ein:

    1. Per Jquery die Checkboxen bei Klick auf den Button auslesen und daraus einen dynamischen Link generieren, der dann per JS geklickt wird.
    • wenn das Auslesen der Checkboxen und das generieren eines Links eine Lösung für Deine "Problemstellung" ist, dann kann man natürlich so machen (wozu Du da jQuery brauchst wirst Du schon wissen)
    1. Seite per Formular an sich selber als Empfängerscript senden und über JS einen Fakeklick auf einen aus den Formulardaten generierten Link machen.

    Sehe ich das korrekt?

    wie gesagt, keine Ahnung was Du vorhast, aber zumindest "Lösung" Nummer 2 schaut leicht nach von hinten übers Knie durch das Auge gedrückt aus. Was soll das Teil den wirklich können? Meist gibts eine viel einfachere Lösung als jene, die einem einfällt, wenn man sich ohnehin schon verrant hat...

    1. Hi,

      Ich hab keine Ahnung, was Du da machst (Lightbox ist ein uralt-Skript zum Anzeigen von Bildern), zumal Du Dich ja zur "Problemstellung" eigentlich nicht äusserst, aber -

      Hab ich aber versucht. Ich versende aus meiner Anwendung heruas Emails. Über eine Lightbox, die ein Script einlädt, das ein Formular hierzu enthält. Und damit alles wie immer für den User aussieht, möchte ich das auch in vorliegendem Fall so machen.

      Der einzige Unterschied ist, dass ansonsten immer zu generierende PDFs versendet werden und nun fertige PDFs, die in einer Übersicht stehen und jedes PDF hat eine Checkbox.

      Ich möchte, dass der User nun n PDFs anwählen kann und anschließend auf einen Button klickt und die Lightbox zum Emailversand kommt genauso herein, wie er das bereits kennt.

      • wenn das Auslesen der Checkboxen und das generieren eines Links eine Lösung für Deine "Problemstellung" ist, dann kann man natürlich so machen (wozu Du da jQuery brauchst wirst Du schon wissen)

      Weil ich Jquery eh schon nutze, ist es sinnvoll, es dann hier auch zu tun.

      wie gesagt, keine Ahnung was Du vorhast, aber zumindest "Lösung" Nummer 2 schaut leicht nach von hinten übers Knie durch das Auge gedrückt aus. Was soll das Teil den wirklich können? Meist gibts eine viel einfachere Lösung als jene, die einem einfällt, wenn man sich ohnehin schon verrant hat...

      Genau wegen der vermeintlich ggf. einfacheren Lösung frage ich hier mal nach.

      Viel genauer kann ich aber das Problem nicht beschreiben, befürchte ich.

      Jörg

      1. Hallo Jörg,

        zumal Du Dich ja zur "Problemstellung" eigentlich nicht äusserst, aber -

        Hab ich aber versucht.

        Und bist bisher grandios daran gescheitert. Deine Beschreibung ist immer noch ziemlich wirr. Bitte bedenke, dass wir deine Anwendung nicht im geringsten kennen.

        Da sind PDFs, da sind Checkboxen, da ist eine Lightbox, da ist ein iframe, da wird eine Mail verschickt - äh, mir schwirrt der Kopf. Was ist worin enthalten, was triggert was?

        Sprichst Du von https://www.lokeshdhakar.com/projects/lightbox2/? Wie passt eine Bildergalerie zum Rest des Themas? Wenn ich die Seite von Lightbox richtig deute, muss man da nur img Elemente mit den richtigen data-Attributen versehen und der Rest geht automagisch.

        Wie bringe ich damit iframe und script zusammen? Was muss ich unter einem Script verstehen, das ein Formular enthält? Generierst Du im Script das HTML für's Formular und zeigst es, als wäre es ein Bild, in einem Lightbox-Popup an?

        Rolf

        --
        sumpsi - posui - obstruxi
      2. Hi there,

        Ich hab keine Ahnung, was Du da machst (Lightbox ist ein uralt-Skript zum Anzeigen von Bildern), zumal Du Dich ja zur "Problemstellung" eigentlich nicht äusserst, aber -

        Hab ich aber versucht. Ich versende aus meiner Anwendung heruas Emails. Über eine Lightbox, die ein Script einlädt, das ein Formular hierzu enthält. Und damit alles wie immer für den User aussieht, möchte ich das auch in vorliegendem Fall so machen.

        Ok, ich hab' jetzt gegoogelt, offenbar wird der Ausdruck Lightbox mittlerweile allgemein für einen Layer verwendet, der sich mit mittels absoluter Positionierung über irgendeinen anderen Webinhalt legt. Ich kannte den Ausdruck nur in Zusammenhang mit Bilddarstellungen (wo er auch ursprünglich herkommt).

        Und darin ist jetzt bei Dir ein Forumlar zu sehen, das nach dem Ausfüllen irgendeine Mail verschickt. Soweit so gut -

        Der einzige Unterschied ist, dass ansonsten immer zu generierende PDFs versendet werden und nun fertige PDFs, die in einer Übersicht stehen und jedes PDF hat eine Checkbox.

        • und nachdem ich nicht annehme, daß es um Checkboxen im PDF geht nehm' ich an, man kann PDFs auswählen, die verschickt werden sollen, richtig? Und irgendwo hast Du jetzt einen Absende-Button, auf den drückt der Anwender, und dann werden ihm die entsprechenden PDFs gemailt, je nachdem, welche Checkbox er angeklickt hat, bin ich soweit noch dabei?

        Falls ja, dann warst Du eh schon am richtigen Weg. Du mußt jetzt entweder nur noch mit Javascript jene Checkboxen einsammeln, die die angeklickt wurden und generierst damit einen String, den Du an den Server schickst oder Du verwendest im Rahmen des Formulars einfach einen echten Submit-Button und schickst das ganze Formular an den Server. Dann stellt sich halt nur mehr die Frage, welche serverseitige Technik zu Anwendung kommt. Ob das jetzt in einer "Lightbox" läuft, oder in einem Iframe oder einfach nur auf der Seite selbst ist eigentlich ziemlich irrelevant, das berührt allenfalls die Darstellungsform und eine etwaige Abschick-Reaktion (in Form von Danke für Ihr blabla...) oder eine eventuelle Problembehandlung, wenn dabei irgendetwas schiefgegangen wäre...

        1. Hallo klawischnigg,

          ah, jetzt. Lightbox = das Tempotaschentuch der Popup-Dialoge.

          beim Versand von Emails über einen Link per Iframe ein Script in diese Lightbox lade,

          Ich versende aus meiner Anwendung heruas Emails. Über eine Lightbox, die ein Script einlädt, das ein Formular hierzu enthält

          Man müsste nun verstehen, welche dieser russischen Püppchen nun in welcher Reihenfolge ineinander stecken.

          Wenn die Checkboxen auf der Parent-Seite sind und das Mail-Form letztlich im iframe steckt, dann stellt sich die Aufgabe, die ausgewählten PDFs in den iframe hinein zu bekommen. DAFÜR stellt sich die Frage, ob Parent- und iframe-Seite den gleichen Origin haben - dann ist's einfach(er).

          Rolf

          --
          sumpsi - posui - obstruxi
          1. Hi there,

            ah, jetzt. Lightbox = das Tempotaschentuch der Popup-Dialoge.

            Ja, offenbar. Jetzt weiß ich endlich wie das heisst, wo meist die beschi gesetzlich vorgeschriebenen Cookie-Hinweise stattfinden.

            beim Versand von Emails über einen Link per Iframe ein Script in diese Lightbox lade,

            Ich versende aus meiner Anwendung heruas Emails. Über eine Lightbox, die ein Script einlädt, das ein Formular hierzu enthält

            Man müsste nun verstehen, welche dieser russischen Püppchen nun in welcher Reihenfolge ineinander stecken.

            Ja eh. Wahrscheinlich würde ein einziger erhellender Blick auf die bisherigen Versuche genügen, um echtes Licht in die Box Angelegenheit zu bringen.

            Wenn die Checkboxen auf der Parent-Seite sind und das Mail-Form letztlich im iframe steckt, dann stellt sich die Aufgabe, die ausgewählten PDFs in den iframe hinein zu bekommen. DAFÜR stellt sich die Frage, ob Parent- und iframe-Seite den gleichen Origin haben - dann ist's einfach(er).

            Davon einmal abgesehen, das würde die Geschichte noch einmal etwas verkomplizieren. Dann wird zumindest eine Javascript-Lösung etwas schwieriger...

        2. Hallo,

          Ok, ich hab' jetzt gegoogelt, offenbar wird der Ausdruck Lightbox mittlerweile allgemein für einen Layer verwendet, der sich mit mittels absoluter Positionierung über irgendeinen anderen Webinhalt legt. Ich kannte den Ausdruck nur in Zusammenhang mit Bilddarstellungen (wo er auch ursprünglich herkommt).

          Und darin ist jetzt bei Dir ein Forumlar zu sehen, das nach dem Ausfüllen irgendeine Mail verschickt. Soweit so gut -

          Ja, genau. So ist es. Ich dachte, der Lioghtbox-Begriff wäre allgemien bekannt. Meine Lightbox ist gut, aber auch ewig alt, ich finde nirgends mehr eine Doku o.ä. dazu 😕

          • und nachdem ich nicht annehme, daß es um Checkboxen im PDF geht nehm' ich an, man kann PDFs auswählen, die verschickt werden sollen, richtig? Und irgendwo hast Du jetzt einen Absende-Button, auf den drückt der Anwender, und dann werden ihm die entsprechenden PDFs gemailt, je nachdem, welche Checkbox er angeklickt hat, bin ich soweit noch dabei?

          Stimmt ganz genau.

          Falls ja, dann warst Du eh schon am richtigen Weg. Du mußt jetzt entweder nur noch mit Javascript jene Checkboxen einsammeln, die die angeklickt wurden und generierst damit einen String, den Du an den Server schickst oder Du verwendest im Rahmen des Formulars einfach einen echten Submit-Button und schickst das ganze Formular an den Server.

          So dachte ich auch. Und so erklären sich auch die beiden Lösungsansätze im Ausgangspost.

          Dann stellt sich halt nur mehr die Frage, welche serverseitige Technik zu Anwendung kommt. Ob das jetzt in einer "Lightbox" läuft, oder in einem Iframe oder einfach nur auf der Seite selbst ist eigentlich ziemlich irrelevant, das berührt allenfalls die Darstellungsform und eine etwaige Abschick-Reaktion (in Form von Danke für Ihr blabla...) oder eine eventuelle Problembehandlung, wenn dabei irgendetwas schiefgegangen wäre...

          Serverseitig läuft php.

          Man müsste nun verstehen, welche dieser russischen Püppchen nun in welcher Reihenfolge ineinander stecken.

          Wenn die Checkboxen auf der Parent-Seite sind und das Mail-Form letztlich im iframe steckt, dann stellt sich die Aufgabe, die ausgewählten PDFs in den iframe hinein zu bekommen. DAFÜR stellt sich die Frage, ob Parent- und iframe-Seite den gleichen Origin haben - dann ist's einfach(er).

          Alle Annahmen korrekt. Checkboxen sind auf der Parentseite, werden angeklickt. Dann wird per Klick auf Link die Lightbox (bzw. der Layer) mit dem Iframe eingeblendet, der im gleichen Origin das Emailformular nachläd. Und dort benötige ich dann die checkboxen, also das Array aus "Checkboxen-IDs", die stellvertretend für die DB-Eintrags-IDs stehen.

          Die Frage der Fragen ist also: Wie gelangen die Checkbox-IDs in die Lightbox?

          Und hier meine Lösungsansätze:

          1. Bei Klick auf "Mailversand" (im Parent bei angeklickten Checkboxen) dann per JS die angeklickten Checkboxen einsammeln und anschließend einen Link generieren und per $_GET die Checkboxen an das Script im Iframe der lightbox senden?

          2. Bei Klick auf "Mailversand" (im Parent bei angeklickten Checkboxen) per $_POST das Array der angeklickten Checkboxen an das Parentscript senden, die Seite also quasi erneut aufrufen, nun aber mit dem Hinweise, dort einen dann generierten Fakelink per JS aufzurufen, der dann das Iframe nachläd (mit entsprechenden Informationen)?

          3. Noch ne andere Lösung?

          Jörg

          1. Hallo Jörg,

            (1) ist wohl am einfachsten, wenn Du nur IDs übermitteln musst. Einfach als punktseparierte Liste generieren (nicht das Komma, das ist in URLs ein reserviertes Zeichen und Du müsstest es als %2C maskieren) und als ?pdfs=123417.5436399.213513 an die URL hängen. In PHP dann einfach explodieren lassen. Sofern die IDs der PDFs denn einfache Zahlen sind. Zahlen+Buchstaben geht noch, aber wenn da Sonderzeichen reinkommen, musst Du evtl. doch noch maskieren. Beachte auch, dass mache Internetkomponenten URLs absägen, wenn sie zu lang werden, und "zu lang" ist da leider ein nicht näher spezifizierter Begriff. Auf der sicheren Seite ist man bei einer Länge < 256 Zeichen, hab ich mal gehört.

            Eine JS-seitige Kommunikation ist dann nicht nötig. Wenn die zu übertragenden Daten die URL gesprengt hätten, dann hätte man den iframe so bauen können, dass er sich die Daten per JS auf dem parent frame holt - das würde ich aber nur machen wenn es überhaupt nicht anders geht. Bei Mixed Origin hätte man dafür auf Messaging zurückgreifen können, alles sehr umständlich.

            Rolf

            --
            sumpsi - posui - obstruxi
            1. Hallo Rolf,

              (1) ist wohl am einfachsten, wenn Du nur IDs übermitteln musst. Einfach als punktseparierte Liste generieren (nicht das Komma, das ist in URLs ein reserviertes Zeichen und Du müsstest es als %2C maskieren) und als ?pdfs=123417.5436399.213513 an die URL hängen. In PHP dann einfach explodieren lassen. Sofern die IDs der PDFs denn einfache Zahlen sind. Zahlen+Buchstaben geht noch, aber wenn da Sonderzeichen reinkommen, musst Du evtl. doch noch maskieren. Beachte auch, dass mache Internetkomponenten URLs absägen, wenn sie zu lang werden, und "zu lang" ist da leider ein nicht näher spezifizierter Begriff. Auf der sicheren Seite ist man bei einer Länge < 256 Zeichen, hab ich mal gehört.

              < 256 Zeichen sollte der URL-String sein, das passt also. Und auch sonst funktioniert es prächtig.

              <A id='MailAttachLink' href="#" title="Email versenden" rel="myLightbox" style='display:none'>BlaBlub</A>    
              
              $(".sendButton").click(function(event) {
              event.preventDefault();
              var MailAttach = $("input[name='my_checkbox[]']:checked").map(function(){
                  return this.value;
              }).get().join('.');
              var new_href = 'script.php?iframe=1&amp;width=800&amp;height=400&amp;pdfs=' + MailAttach
              $('#MailAttachLink').attr('href', new_href);
              $('#MailAttachLink').click ();
              });
              

              Den Rest macht dann das Empfängerscript.

              Danke für Eure Hilfe.

              Jörg