form ruft neue Seite auf beim ausführen
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
attribut
aufruf
beschreiben
code
folgende funktion
folgendem code
folgendes form
form
frage
holzweg
klappen
machen
post
problem
richtige ansatz
stock
tag
testen
url
verarbeiten
-
So ich mal wieder mit einem tag/problem">Problem.
Ich habe ein form-Tag das ich über GM_xmlhttpRequest einlese und in einem Overlay-DIV ausgebe.
Das läuft auch ohne Probleme und das Form-Tag wird auf Klick auch ausgeführt. Das Problem ist das beim ausführen immer die Seite, die im „action“ steht aufgerufen wird. Ich würde das Ganze nun gern so gestalten, das auf Klick das Form ausgeführt wird und nur ein Seitenreload durchgeführt wird.
Ich versuche es mal zu beschreiben:
So ist es derzeit,
User ruft auf Seite A das form im Overlay-Div auf und führt es aus, dadurch wird er auf Seite B geleitet.
So soll es sein,
User ruft auf Seite A das form im Overlay-Div auf und führt es aus, er bleibt auf Seite A.
Hier mal der Code vom form-tag:
<form method="post" action="/city/washhouse/buy/"> <input class="formbutton" name="submitForm" value="Für €25,00 kaufen" type="submit"> </form>
Hier mal sicherheitshalber noch der vollständige Code, falls nötig. Bitte Greasmonkey abschalten um den Code zu sehen.
www.pennereck.de/gm_scripte/homebase_new_edition.user.js
Hoffe mal man versteht mein Problem.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Lösung deines Problems: du legst bei deinem Form einen
-Eventhandler fest, deronsubmit
1. die Form per AJAX verarbeitet und
2.
zurückgibt.false
Dann wird die Seite gar nicht neu geladen, aber die Aktion trotzdem ausgeführt (solange JavaScript aktiviert ist, aber da es um GreaseMonkey geht ist dieser Hinweis wohl unnötig). -
Ich hab mich mal "begoogelt" und einiges Probiert, klappen tut natürlich nix.
Bevor ich nun weiter in diese Richtung probiere Frage ich mal lieber nach, ist das der richtige Ansatz?
Ich vermute fast nein.
Ich habe zum testen folgendes Form verwendet:
<form id="essen_form" method="post" onsubmit="sendForm(); return false;"> <input id="drink_Brot" type="submit" value="Essen" title="xxxx"/> <input type="hidden" name="item" value="Brot"> <input id="Brot" type="hidden" value="-0.35" /> <input type="hidden" name="promille" value="-35" /> <input type="hidden" name="id" value="2" /> <input id="menge_Brot" type="text" size="2" name="menge" value="8" onKeyUp="generateWirkung(3);" /> </form>
Dazu kommt folgende Funktion:
function sendForm(){ var form = $('#essen_form'); var data = form.serialize(); $.post('/stock/foodstuffs/use/', data, function(response) { alert(response); }); return false; }
Füge ich in das Form-Tag das action attribut ein wird auch gesendet, allerdings halt wieder auf einer neuen Seite.
(action="/stock/foodstuffs/use/")
Die Funktion selber scheint garnicht angesprochen zu werden.
Ich vermute mal ich bin total auf dem Holzweg und das was ich da mache ist der total Quatsch. (versuch macht klug ) -
Du kannst wie bereits gesagt auch AJAX verwenden oder du kannst auch die Seite selbst nochmal laden, das wird in PHP öfters mit folgendem Code realisiert:
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
POST/GET ist egal...
und dann prüfst du ob du variablen beim aufruf hast und kannst diese dann verarbeiten... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage