Formular inkl. PoST über Javascript schicken?
nonentity
- javascript
Hoihoi
Das ist vielleicht ein triviales Problem, vielleicht ist es auf meine gewünschte Weise nicht lösbar, kA, ich such jetzt schon ne ganze Weile, zerbrech mir drüber den Kopf, aber komm nicht drauf wie es zu lösen ginge.
Folgendes:
Ich hab eine Index-Seite in der außer nem leeren <div> Container nicht viel ist.
Weiters habe ich eine Seite content_gen.php die den entsprechenden Inhalt generiert etc., dann noch eine Ajax-File.
Mein Wunsch allgemein, ich starte die Seite, es wird von dort aus ein Ajax-Skript aufgerufen, dass mir den Inhalt der content_gen in den leeren div-Container schreibt, innerHTML etc. Das mal kein Problem, hab nen andern Teil der Seite wo das problemlos funzt.
Aber nun folgendes: Ich habe in der content_gen recht viele Formulare, es wird viel mit POST Daten gearbeitet.
Das ganze Ziel der content_gen und der Verwendung von Ajax bzw nur Javascript is der, dass die gesamte Seite nicht dauernd neu geaden werden muss sondern der Content in den div-Container neu reingeladen wird, ohne die "darüberliegende" Index etc. neu zu laden.
Mein Problem jetzt - wie kann ich die Formulare, inkl. der POST-Daten übermitteln, so dass sie mittels Ajax auch in den Container geladen werden bzw die aufzurufenden Seiten?
Beispiel:
Ich starte die Seite, index.php, je nach der Seiten-ID wird über Ajax die content_gen mit einer anderen GET Variable aufgerufen.
Diese wird dann in der content_gen mit isset abgefragt, ich komme dadurch in den entsprechenden Unterbereich (hatts mir überlegt über Funktionen zu machen, vorerst lass ichs aber mal so, vl später, noch überlegen ob sinnvoll oder nicht).
All das spielt sich bereits im div-Container ab, idealerweise.
In der generierten Seite ($content.="blablub".... return $content;) is ein Formulare, ich trage zig Daten ein, unter anderem viel Text in der textarea, damit fällt das schícken über GET etc. weg.
Das Formular soll wieder die content_gen laden, anhand der neuen POST-Daten wird aber eventuell ein neuer Abschnitt in der content_gen gestartet.
Wenn ichs aber einfach so aufrufe, wird über den <input type=submit>-Knopf die ganze Seite neu geladen. Dabei werden die POST-Daten noch normal übermittelt.
Ich möchte aber, dass diese folgende Seite wieder im <div> Container geladen wird, bräuchte also beim submit ein onsubmit=javascript:url_laden(blablabla), in der form action=javascript:url_laden(blablabla).
Da spreizt es sich aber scheinbar mit method=post, habs grad versucht, wenn ich method=post entferne gibt er mir keinen Fehler aus, er macht aber nix.
Wenn method=post drinnen is, bekomm ich ne Fehlermeldung, dass bla.seite.url/javascript:url_laden(blablabla) nicht funzt, klarerweise.
Mit action=blablabla lädt er die Seite, überträgt aber keine POST-Daten bzw macht er nix außer zur Seite zu gehn.
So, bißchen lang geworden, hoffe es is nicht zuviel sondern hilft, dass es verständlich is. :D
Hat vielleicht jemand ne Idee wie ich das ganze Problem erledigen könnte?
Möchte in der Sache endlich weiterkommen, wäre für Hilfe sehr dankbar.
Hi,
Das ganze Ziel der content_gen und der Verwendung von Ajax bzw nur Javascript is der, dass die gesamte Seite nicht dauernd neu geaden werden muss sondern der Content in den div-Container neu reingeladen wird, ohne die "darüberliegende" Index etc. neu zu laden.
Das ist in nahezu 99% der Fälle, wo es jemand vorhat, grober Unsinn.
Die Benutzbarkeit wird nahezu immer erheblich eingeschränkt, von der Problematik mit Suchmaschinen und alternativen Clients mal ganz abgesehen.
Wenn du AJAX also nur einsetzen willst, um den Effekt von Frames - "nicht alles neu laden" - zu imitieren, dann ist das der gleiche Murks in Grün.
Mein Problem jetzt - wie kann ich die Formulare, inkl. der POST-Daten übermitteln, so dass sie mittels Ajax auch in den Container geladen werden bzw die aufzurufenden Seiten?
Ebenfalls per AJAX.
MfG ChrisB
Du müsstest mittels JavaScript die aktiven Formularfelder auslesen, Namen und Werte korrekt kodieren, einen eigenen Request-Body zusammenbauen und den mit XMLHttpRequest per POST an die angegebene action verschicken.
Große JavaScript-Bibliotheken bieten einem dafür Helferfunktionen oder erlauben zumindest das Serialisieren von Formularen (Stichwort Form Serialization, z.B. in jQuery). Allerdings frage ich mich ebenfalls, ob sich der Aufwand lohnt. Warum baust du nicht serverseitig die Seiten zusammen, welchen Vorteil hat diese »Ajax-Frames«-Lösung, die ihre Nachteile überwiegt?
Mathias