ilch Forum » Ilch Clan 1.1 » Fehlersuche und Probleme » jquery Form Submit

Geschlossen
  1. #1
    User Pic
    Outi77 Mitglied
    Registriert seit
    31.03.2013
    Beiträge
    1.337
    Beitragswertungen
    143 Beitragspunkte
    Hallo zusammen,

    ich versuche verzweifelt, die post-Daten auszuwerten, die ich mittels jquery beim Submit übermittle.
    Ich habe folgende Form:
    <script language="JavaScript" type="text/javascript"><!--
    function show_opts_gal(){
        document.getElementById('gallery_opts_tbl').style.display = 'block';
    }
    
    function close_opts_gal(){
        document.getElementById('gallery_opts_tbl').style.display = 'none';
    }
    
    
    //--></script>
    <div style="float: right"><a href="admin.php?gallery">Zur&uuml;ck zur Gallerie</a></div>
    <table cellpadding="0" cellspacing="0" border="0"><tr><td><img src="include/images/icons/admin/gallery.png" /></td><td width="30"></td><td valign="bottom"><h1>Deaktivierte Images</h1></td></tr></table>
    <table cellpadding="3" cellspacing="1" border="0" class="border" style="position:absolute; top:65px; left:540px">
        <tr class="Cdark">
            <td colspan="6">
                <a href="javascript:void(0);" onclick="show_opts_gal();">Optionen</a>
            </td>
        </tr>
    </table>
    <form action="admin.php?gallery" method="POST">
    {EXPLODE}
    <h2>{name}</h2>
    <table width="100%">
        <tr>
            <td valign="top" width="100%" rowspan="2">
                <table cellpadding="3" border="0" cellspacing="5" class="border">
                    <tr>
                    {EXPLODE}
                        <td class="{class}" valign="top">
                            <table cellpadding="2" border="0" cellspacing="1" class="border">
                                <tr>
                                    <td valign="top" class="{class}">
                                        <table cellpadding="1" border="0" cellspacing="0" class="border">
                                             <tr>
                                              <td class="Cmite"><a href="javascript:del({id})"><img src="include/images/icons/del.gif" border="0" title="l&ouml;schen" alt="l&ouml;schen"></a></td>
                                            </tr>
                                            <tr>
                                              <td class="Cnorm"><a href="javascript:edit('{besch}',{id})"><img src="include/images/icons/edit.gif" title="&auml;ndern" border="0" alt="&auml;ndern"></a></td>
                                            </tr>
                                            <tr>
                                              <td class="Cmite"><a href="javascript:reload({id})"><img src="include/images/icons/reload.gif" border="0" title="erneuern" alt="erneuern"></a></td>
                                            </tr>
                                            <tr>
                                                <td class="Cnorm"><a href="javascript:activate({id},'{link}')"><img src="include/images/icons/{sperre}.gif" alt="{sperren}" title="{sperren}" border="0"></a></td>
                                            </tr>
                                            <tr>
                                              <td class="Cnorm"><input type="checkbox" name="img[]" value="{id}" style="margin:0px; padding: 0px;" title="Bild f&uuml;r Verschieben markieren" /></td>
                                            </tr>
                                        </table>
                                    </td>
                                    <td valign="top" class="{class}">
                                        <a href="include/images/gallery/img_{id}.{endung}" class="lightbox" data-lightbox-gallery="gallery{name}" title="{besch}"><img alt="{datei_name}" src="include/images/gallery/img_thumb_{id}.{endung}" />{span}</a>
                                    </td>
                                </tr>
                            </table>
                        </td>
                    {EXPLODE}
                    </tr>
                </table>
            </td>
        </tr>
    </table></form>
    {EXPLODE}
    <script language="JavaScript" type="text/javascript">
    <!--
    
      function del ( id1 ) {
        var x = confirm ( "Dieses Bild wirklich löschen?" );
    		if ( x ) {
    		  document.location.href="?gallery-d"+id1;
    		}
    	}
      function edit ( besch, id1 ) {
        var x = prompt ( "Bitte die neue Beschreibung eingeben!", besch);
        if ( x ) {
          document.location.href="?gallery-e"+id1+"=0&besch=" + x;
        }
      }
      function reload ( id1 ) {
        var x = confirm ( "Dieses Bild wirklich erneuern?" );
        if ( x ) {
          document.location.href="?gallery-r"+id1;
        }
      }
      function activate ( id1, link ) {
          document.location.href="?dimages-"+link+"-a"+id1;
      }
      
    //-->
    </script>
    {EXPLODE}
    <form id="gallery_opts">
    <table cellpadding="3" cellspacing="1" border="0" class="border" id="gallery_opts_tbl" style="position:absolute; top:150px; left:540px; width:332px; height:138px; display:none">
        <tr height="30" class="Chead">
            <th colspan="2">Gallerie - Optionen</th>
        </tr>
        <tr height="30">
            <td class="Cmite">PM-Empf&auml;nger bei Gallerie - Uploads</td>
            <td class="Cnorm"><select id="pmempf_gal" multiple="multiple" name="pmempf_gal[]" />{pmempf_gal}</select></td>
        </tr>
        <tr height="30">
            <td class="Cdark" colspan="2"><input type="submit" value="Speichern" /> &nbsp; <input type="button" value="Schlie&szlig;en" onclick="close_opts_gal();" /></td>
        </tr>
    </table>
    </form>
    <script type="text/javascript">
        $(document).ready(function() {
            var form    = $('#gallery_opts');
            //var submit  = $('#submit');
            
            //form submit event
            form.on('submit', function(e) {
                e.preventDefault();
                
                $.ajax({
                    url     : 'admin.php?dimages',
                    type    : 'POST',
                    dataType: 'html',
                    data    : form.serialize(),
                    
                    error   : function(e) {
                        console.log(e);
                    }
                });
                form.hide();
            });
        });
    </script>

    Hier werden, wie bei den News Extended, die PM-Empfänger in einem <select multiple> angegeben.
    Dieses möchte ich bei Submit an die dimages.php übermittlen und dort dann in der DB speichern.
    Firebug zeigt mit folgendes:
    gesperrtes Bild
    Die Daten werden also korrekt übermittelt. Aber wie werte ich jetzt den query-string in der php aus?
    Hatte es mit parse_str($_POST['pmempf_gal'], $new_arr_empf); versucht, um dieses neue Array dann erstmal mit print_r($new_arr_empf); auszugeben.
    Allerdings passiert gar nichts. Nach Klick auf Submit schließt sich die Form, das Array wird aber nicht "angezeigt".
    Könnte mir bitte jemand hierbei helfen, meine Kenntnisse diesbezüglich sind nicht die Größten?

    Danke vorab und schönen Heiligen Abend!

    Grüße Outi


    Zuletzt modifiziert von Outi77 am 24.12.2013 - 14:24:07
    Die richtige Formulierung eines Problems ist nicht selten bereits die halbe Lösung.
    »Albert Einstein«
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Pion Hall Of Fame
    Registriert seit
    25.07.2007
    Beiträge
    870
    Beitragswertungen
    51 Beitragspunkte
    Moinchen,

    du kannst nun einfach mit

    $_POST['pmempf_gal']


    drauf zugreifen.

    Du bekommst allerdings ein Array, sprich $_POST['pmempf_gal'][0] ist deine 1 und $_POST['pmempf_gal'][1] deine 7. Du kannst zb drüber Loopen:

    foreach($_POST['pmempf_gal'] as $pmempf){ echo $pmempf; }
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Outi77 Mitglied
    Registriert seit
    31.03.2013
    Beiträge
    1.337
    Beitragswertungen
    143 Beitragspunkte
    Danke für Deine Hilfe!
    Ich habe jetzt folgendes:
    #PM-Empfänger in DB speichern
    $galleryempf = '';
    if (isset($_POST['pmempf_gal'])) {
        foreach($_POST['pmempf_gal'] as $pmempf) {
            $galleryempf .= $pmempf.'#';
        }
        db_query("UPDATE prefix_allg SET v3 = '$galleryempf' WHERE k = 'Gallery'");
    }

    Leider passiert rein gar nichts, heißt das Update in der DB wird nicht ausgeführt.
    Muss die oben aufgeführte Routine an eine bestimmte Stelle in der php?
    Ich habe die jetzt direkt unter
    $tpl = new tpl ( 'dimages', 1 );

    gesetzt.
    Was kann ich tun um herauszufinden, warum das nicht läuft?
    Kann mir FireBug irgendwie dabei helfen?
    Mit Deiner Variante mit echo... hat es auch nicht funktioniert.

    Update:
    Es funktioniert doch, ich hatte zwischenzeitlich die url auf 'include/admin/dimages.php' geändert, jetzt zurück auf 'admin.php?dimages' und es funzt.
    Eine Frage noch: wenn sich nach Klick auf Submit die Form geschlossen hat und ich sie direkt danach durch Klick auf "Optionen" erneut öffnen möchte, geht das nicht. Heißt, die Form öffnet sich nicht. Woran könnte das liegen?
    Möglicherweise am form.hide(); ?
    Habe den Code im ersten Post mal komplettiert...


    Zuletzt modifiziert von Outi77 am 24.12.2013 - 14:50:43
    Die richtige Formulierung eines Problems ist nicht selten bereits die halbe Lösung.
    »Albert Einstein«
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Outi77 Mitglied
    Registriert seit
    31.03.2013
    Beiträge
    1.337
    Beitragswertungen
    143 Beitragspunkte
    So hab den Fehler selber gefunden. Ich versuche die ganze Zeit, mit
    form.css("display", "none");

    die Form selber zu "schließen", anstatt die Tabelle.

    Mit
    var tbl     = $('#gallery_opts_tbl');
    tbl.css("display", "none");

    funktioniert es jetzt.
    Danke nochmal für die Hilfe.
    Schöne Feiertage!

    -- erledigt --
    Die richtige Formulierung eines Problems ist nicht selten bereits die halbe Lösung.
    »Albert Einstein«
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Outi77 Mitglied
    Registriert seit
    31.03.2013
    Beiträge
    1.337
    Beitragswertungen
    143 Beitragspunkte
    Jetzt möchte ich dieses Prinzip gerne auf die Shoutbox anwenden.
    Dabei stellt sich mir die Frage, an welche url (Datei) ich die Post-Daten übergebe?
    In der shoutbox.htm ist das form action leer, die gesendeten Daten werden in der /boxes/shoutbox.php ausgewertet. Muss ich dann beim ajax-Teil die url ebenfalls leer lassen?


    Zuletzt modifiziert von Outi77 am 27.12.2013 - 15:00:46
    Die richtige Formulierung eines Problems ist nicht selten bereits die halbe Lösung.
    »Albert Einstein«
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Die komplette Seite neuzuladen im Ajax wäre nicht sehr sinnvoll, aber funktionieren würde es sicherlich.

    Sinnvoller wäre es, eine eigene Datei im contents Order dafür anzulegen, die dir ggf. auch die Shoutbox als HTML zurückgibt, so dass du die vorhandene auf der Seite, die den Ajaxrequest stellt, ersetzen kannst.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Outi77 Mitglied
    Registriert seit
    31.03.2013
    Beiträge
    1.337
    Beitragswertungen
    143 Beitragspunkte
    Du meinst, im Prinzip wie die /boxes/shoutbox.php, nur als content-Datei?
    Die richtige Formulierung eines Problems ist nicht selten bereits die halbe Lösung.
    »Albert Einstein«
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Müsste funktionieren ja.

    Allerdings musst du im Javascript auch angeben, was mit dem zurückgegeben HTML gemacht wird. Es also in einen Container einfügen, der die Shoutbox beinhaltet.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Fehlersuche und Probleme

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten