Antworten auf deine Fragen:
Neues Thema erstellen

Nach submit in Overlay auswerten

ceyhan

Noch nicht viel geschrieben

Hallo zusammen

ich bin gerade die welt von jquery am durchforsten und habe eine kleine frage. wie villeicht einige wissen arbeite ich an einem formular.

ich habe freude an der optik von jquery und möchte gerne wissen wie ich nach submit vom formular das ganze ins overlay ausgeben kann.

weil mein formular ist momentan so aufgebaut

PHP:
    <div id='tabs-1'><form method='post' action='path/to.php' target='popup' onsubmit='window.open('','popup','width=400,height=400')'>

und jetzt das es anstatt im neuen fenster kommt gerne auf das overlay. habe bis jetzt das tab plugin implementieren können und funktioniert alles soweit
 

Myhar

Hat es drauf

AW: Nach submit in Overlay auswerten

jQuery hat keine Optik, hier ist mir also unklar, was du damit meinst.
Aber das hat nichts mit deinem eigentlichen Problem zu tun:

Dein Fenster wird mittels window.open geöffnet, nachdem du das nicht haben willst, entferne dies:
HTML:
<form method='post' action='path/to.php' target='popup' >

Dann brauchst du noch eine Javascriptfunktion, welche dir dein Formular per AJAX abschickt und die Antwort dann im Overlay anzeigt.
Das Grundprinzip ist folgendermaßen:
HTML:
$("#form").on("submit",function() {
//Hier kommt dein AJAX Request rein und beim Empfangen der Daten müssen diese dann "nur noch" in einem Overlay angezeigt werden. 
//#form bezieht sich dabei auf dein Formular, die ID musst du natürlich an dein Formular anpassen.
});
 

ceyhan

Noch nicht viel geschrieben

AW: Nach submit in Overlay auswerten

HTML:
$("#form").on("submit",function() {
//Hier kommt dein AJAX Request rein und beim Empfangen der Daten müssen diese dann "nur noch" in einem Overlay angezeigt werden. 
//#form bezieht sich dabei auf dein Formular, die ID musst du natürlich an dein Formular anpassen.
});


genau hier habe ich mein problem. da komme ich nicht mehr weiter. ich muss ehrlich zugeben ich habe nicht soviel erfahrung mit ajax

könntest du mir da evt. den code helfen zu schreiben
 

hub

nicht ganz neu hier

AW: Nach submit in Overlay auswerten

HTML:
$("#form").on("submit",function() {
//Hier kommt dein AJAX Request rein und beim Empfangen der Daten müssen diese dann "nur noch" in einem Overlay angezeigt werden. 
//#form bezieht sich dabei auf dein Formular, die ID musst du natürlich an dein Formular anpassen.
});
moin moin,
etwas verständlicher:
HTML:
$("#form").on("submit",function(e) {
   alert(e.data);
}

Diese Funktion gibt das eventobject (Link) zurück. In data findest du das, was du mit deinem PHP zurück gibst.
Mein bester Freund ist die API-Beschreibung, die i.d.R. auch noch gute Beispiele hat.

Gruß Ulli
Nachtrag: Die Funktion gibt nichts zurück, sondern empfängt !!! Sorry :(
 
Zuletzt bearbeitet:

mindraper

me[code].Java(Script)

AW: Nach submit in Overlay auswerten

moinsen,

HTML:
$("#form").on("submit",function(e) {
   alert(e.data);
}
Diese Funktion gibt das eventobject (...) zurück. In data findest du das, was du mit deinem PHP zurück gibst.
Mein bester Freund ist die API-Beschreibung (...)

Nachtrag: Die Funktion gibt nichts zurück, sondern empfängt !!! Sorry :(

@hub:
die function gibt GAR NICHTS zurück (bzw.: undefined). Erstens fehlt dafür das return-statement, zweitens – und das wiegt schwerer – wird das formular abgeschickt, mit page-reload und allem.
sie EMPFÄNGT auch nichts, sondern stellt dir nur ein generisches event-object zur verfügung. das wird dann auch noch mal durch jQuery genudelt und fertig ist die soße.

@TE:
zunächst muss unterbunden werden, dass der browser das formular abschickt und dadurch einen page-reload auslöst. dazu benötigst du ein bis zwei dinge:
- ein generisches event-object...
- ... mit einer methode, das standardverhalten zu unterbinden
- ... und ggf. einer möglichkeit, sog. "event-bubbling" zu unterbinden

um das standartverhalten zu unterbinden, erweitert jQuery das generische event-object (bzw: das window.event-object bei älteren IE-versionen) um die methode .preventDefault() – was offensichtlich auch gleich ihre funktion erklärt: "verhindere/unterdrücke-(den/das)-Standard(-verhalten)". wie praktisch!
ich gehe mal nicht davon aus, dass du ein formular innerhalb eines anderen formulares verschicken möchtest, ohne einen page-reload. falls doch, gibt es betreffs des "bubblings"-problems: .stopPropagation().

also:
Code:
// query-result in variable speichern (zwecks DRY*)
var myForm = $('form');
myForm.on('submit', handleSubmission);

function handleSubmission (event) {
    event.preventDefault();
    // optional. verhindert einen aufruf des submit-events auf eltern-knoten
    // event.stopPropagation();
};
--------------------------------------------------
* = DONT-REPEAT-YOURSELF
ok, das wäre soweit klar. wenn das formular abgeschickt wird passiert erst mal gar nichts mehr (... was erfreulich ist). jetzt kommt part 2: ajax. dazu nutzt du – ein einem anflug von pragmatismus – einfach die ajax-methoden von jQuery. die function "handleSubmission" sieht danach so aus:

Code:
function handleSubmission (event) {
    event.preventDefault();
    // optional. verhindert einen aufruf des submit-events auf eltern-knoten
    // event.stopPropagation();

    // this zeigt hier auf das formular
    // $.fn.serialize() produziert einen url-encodierten string
    // der daten, die in das formular eingegeben wurden
    var xhr = $.ajax({
         type: this.method.toUpperCase(),
         url: this.action,
         data: $(this).serialize()
    });

    // xhr ist das request-object.
    // die function in .done() wird bei erfolg aufgerufen.
    //    "data" beinhaltet die antwort vom server.
    // die function in .fail() wird aufgerufen, wenn der request fehlschlägt
    xhr.done(function (data) {
        /**
        * ab hier beginnt die weitervararbeitung von der antwort.
        * diese verarbeitung hängt davon ab, in welcher form das php-script
        * anwortet. möglich wären z. b. text (plain) oder JSON.
        */
    });
    xhr.fail(function (errorObject, errorMessage) {
        if (typeof console !== 'undefined' && typeof console.log === 'function') {
            console.log(errorObject);
        }

        alert(errorMessage);
    });
};
und fertig ist die laube. :)

hoffe das hilft.
 
Zuletzt bearbeitet von einem Moderator:

hub

nicht ganz neu hier

AW: Nach submit in Overlay auswerten

na ja, ich denke, wenn du die Ahnung hast, wüsstest du, das diese Funktion ein false zurückgeben muss, damit du die Daten verarbeiten kannst ohne das das Form abgeschickt wird.
Sorry, das ich helfen wollte, war offensichtlich ein Fehler. Beschäftige dich erst mal mit der Materie, dann können wir weiter reden!
 

mindraper

me[code].Java(Script)

AW: Nach submit in Overlay auswerten

moin,

na ja, ich denke, wenn du die Ahnung hast, wüsstest du, das diese Funktion ein false zurückgeben muss, damit du die Daten verarbeiten kannst ohne das das Form abgeschickt wird.
(...)

nein, muss sie explizit nicht. hättest du meinen beitrag (insbesondere meine antwort an den TE) gelesen, wüsstest du auch wieso die function kein "return false"-statement hat bzw. überhaupt braucht.

siehe auch: hier

tipp: eine google suche nach "browser standard verhalten unterbinden" führt zu ca. 2.020.000 ergebnissen, von denen nr. 3 (matthiasschuetz.com) sowie zwei darin verlinkte artikel besonders empehlenswert ist/sind.
 
Zuletzt bearbeitet von einem Moderator:

cebito

undefined

AW: Nach submit in Overlay auswerten

@mindraper - vielleicht bist du ja der obertollste, oberschlaueste jQueryGuru des Universums, aber von zwischenmenschlicher Kommunikation hast du noch nicht allzu viel gehört. Man kann jemandem auch auf andere Weise sagen, das er evtl. falsch oder daneben liegt.
 

ceyhan

Noch nicht viel geschrieben

AW: Nach submit in Overlay auswerten

ehrlich gesagt habe ich jetzt ein absolutes durcheinander. kann mir jemand der sich ein bisschen damit auskennt mit mir irgendwie anders komunizieren skype oder irc etc.?
 

hub

nicht ganz neu hier

AW: Nach submit in Overlay auswerten

Moin moin,
ich versuchs nochmal. Ich habe deinen Form-Tag entsprechend geändert:
HTML:
<form id="mein-form" method='post' action='path/to.php' >
<!-- deine Form-Elemente -->
 
<!-- dein Ziel-Div als Empfänger: -->
<div id="deine-div-id"></div>
und ein Beispiel-Script auf jQuery basierend:
HTML:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
 // Submit des Formulares binden:
 $('#mein-form').submit( function () {
  // ev. prüfungen
  // dann per post an url das serialisierte Formular senden
  $.ajax({
     type: "POST",
     url: 'test.php',
     data: $(this).serialize(),
     success: function(data) {
      // wenn erfolgreich dann Php-Ausgabe in Ziel-Div anzeigen
    $('#deine-div-id').html(data);
     }
   }); 
  // senden des Formulares verhindern
  return false;
 })
});
</script>
(Pfade musst du den deinen anpassen ...)
Wichtig sind hier die zusätzlichen Parameter / Möglichkeiten von ajax() und serialize() .
So gesehen ist das nur eine funktionsfähige Anregung, siehe dem Beispiel von mindraper - anderer Weg - gleiches Ergebnis.

Gruß Ulli
 

ceyhan

Noch nicht viel geschrieben

AW: Nach submit in Overlay auswerten

salut ulli

also ich kriegs nicht hin.
villeicht mache ich einen fehler.

<!-- dein Ziel-Div als Empfänger: --> <div id="deine-div-id"></div>
was muss ich da den eintragen ??
 

hub

nicht ganz neu hier

AW: Nach submit in Overlay auswerten

Moin moin,
da muss eigentlich garnichts rein. Das ist das Element, das die Daten empfangen soll die von Ajax zurückgegeben werden.
Hast du mal geprüft, ob deine Php-Datei die Formulardaten empfängt?
Leider kann ich so nicht beurteilen, wo der Fehler liegt. Ist es möglich, das du mal beide Dateien (da, wo das Formular drin ist und die Php-Datei, die aufgerufen wird) vollständig veröffentlichst?
Den Code, den ich gepostet habe, ist getestet und funktionsfähig. Daher gehe ich davon aus, das der Fehler im Umfeld passiert.

Zum Ausprobieren mal die beiden Test-Dateien:

test.html
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
 // Submit des Formulares binden:
 $('#mein-form').submit( function () {
  // ev. prüfungen
  // dann per post an url das serialisierte Formular senden
  $.ajax({
     type: "POST",
     url: 'test.php',
     data: $(this).serialize(),
     success: function(data) {
      // wenn erfolgreich dann Php-Ausgabe in Ziel-Div anzeigen
    $('#deine-div-id').html(data);
     }
   }); 
  // senden des Formulares verhindern
  return false;
 })
});
</script>
</head>
<body>
<form id="mein-form" method='post' action='test.php' >
<input type="submit">
</form>
<div id="deine-div-id"></div>
</body>
</html>

test.php
PHP:
<?php
echo "Antwort";
jQuery must du noch in der test.html anpassen.
Wenn du auf submit klickst, erscheint "Antwort" im Div unter dem Button.

Gruß Ulli
 

ceyhan

Noch nicht viel geschrieben

AW: Nach submit in Overlay auswerten

funktioniert supiii danke dir ulli

nun würde ich eine stufe steigern :D könnte man das auch in ein overlay packen??
 

hub

nicht ganz neu hier

AW: Nach submit in Overlay auswerten

Das sollte kein Problem sein. Dein "Ziel"-Div kannst du ja frei definieren. du musst nur dafür Sorge tragen, das es tatsächlich schon existiert, wenn du dort Daten rein schreibst.
Bin im Moment etwas begriffsstutzig, was genau meinst du mit "in ein overlay packen"? Hast du da schon was, oder willst du es gerade programmieren und wie solls aussehen, wenns fertig ist?

Gruß Ulli
 

Myhar

Hat es drauf

AW: Nach submit in Overlay auswerten

Ein overlay ist im Prinzip auch nur ein div, welches mit CSS das gewünschte Aussehen erhält. Also wird die Ausgabe schon "im Overlay" erledigt. Lediglich das CSS muss nach deinen persönlichen Wünschen noch geschrieben werden. Da keiner weiß, wie dein overlay aussehen soll, kann man hier auch noch nicht mehr sagen.
 

Myhar

Hat es drauf

AW: Nach submit in Overlay auswerten

Natürlich bekommt man das so hin. Wenn du dir das von dir verlinkte Beispiel ansiehst, wirst du feststellen, dass dort ebenfalls ein div verwendet wird. Niemand hindert dich daran, die Styles von deinem verlinkten Beispiel zu kopieren und auf deiner Seite einzufügen. ;)
 

ceyhan

Noch nicht viel geschrieben

AW: Nach submit in Overlay auswerten

also bei submit habe ich folgendes gemacht

HTML:
<input type='submit' name='submit' id='dialog-link' value='Senden'>
und im div wo alles ausgewertet kommen muss

HTML:
<div id="dialog"></div>
das heisst das ich das script bei
HTML:
 // wenn erfolgreich dann Php-Ausgabe in Ziel-Div anzeigen
    $('#deine-div-id').html(data);
     }
   });
ind folgendes umändern muss?

HTML:
      // wenn erfolgreich dann Php-Ausgabe in Ziel-Div anzeigen
    $('#dialog').html(data);
     }
   });
verstehe ich das richtig ???

//EDIT:

ok habe es getestet aber es kommt keine auswertung in der box die aufpoppt
 

hub

nicht ganz neu hier

AW: Nach submit in Overlay auswerten

jo, wie Myhar schon sagt. Du musst nur den Teil unter success aus dem vorherigen Code anpassen:
HTML:
success: function(data) {
    // wenn erfolgreich dann Php-Ausgabe in Ziel-Div anzeigen
    $('#dialog').html(data, function(){
      $('#dialog').dialog();
    });
     }
....
 
<div id="dialog" title="Dein Titel"></div>

Diesen Div blendest du standardmäßig mit css aus: #dialog { display: none;}.
Initialisiert wird er dann, wenn ajax erfolgreich ausgeführt und der Request in den div-Tag geschrieben wurde.
Die Optionen für das Verhalten dieser Box findest du dort in der API-Beschreibung.

Gruß Ulli
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.635
Beiträge
1.538.477
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben