dynamische <FORM>: server antwort verloren.
frauholle
- javascript
Liebes Forum,
ich versuche gerade eine einfache Form (method=POST) mit einem einzigen Textfeld automatisch von einem Javascript ausfüllen, absenden und die Serverantwort anzeigen zu lassen. (Das ganze läuft als Firefox plugin aber das tut wohl nichts zur Sache, ist weitgehend Javascript).
Ein Testbeispiel einer solchen Form liegt auf:
FORM beispiel
Mein Code, der die Form herausholt und dann abschickt sieht so aus (ja ich weiss, nicht undebdingt schön mit dem ganzen hard-gecodeten nodes!):
var myForm = content.document.body.childNodes[0].childNodes[0];
myForm.target="_self";
var myInp = content.document.body.childNodes[0].childNodes[0].childNodes[0];
myInp.value = "test";
myForm.submit();
Ich scheine hier nichts grundsätzliches falsch zu machen, denn ich sehe wie der Text "test" in das Feld geschrieben wird und danach eine Server-Anfrage stattfindet. Das Resultat ist jedoch wieder die gleiche Seite wie vorher und nicht die tatsächliche Serverantwort (erwartet wird wie bei manueller Eingabe eine leere Seite mit dem Text "Eingegebener Text: test" und nicht die gleiche Seite, die so aussieht als hätte einfach jemand "reload" gedrückt).
Hat jemand einen Hinweis wie ich zu dieser Serverantwort gelangen könnte? Das target auf "_self" zu setzen bring nichts (auch "_blank", etc., oder das target ganz wegzulassen zeigt nicht das gewünschte Ergebnis auf irgend einer Seite an). Eventuell ist meine Idee des submit()-Aufrufs einfach nicht so machbar?
Besten Danke,
Holle
Hi,
Ich scheine hier nichts grundsätzliches falsch zu machen, denn ich sehe wie der Text "test" in das Feld geschrieben wird und danach eine Server-Anfrage stattfindet.
Da siehst du mehr als ich - denn von dem erwähnten JavaScript-Code kann ich nichts entdecken in deinem Beispiel-Dokument.
Das Resultat ist jedoch wieder die gleiche Seite wie vorher und nicht die tatsächliche Serverantwort (erwartet wird wie bei manueller Eingabe eine leere Seite mit dem Text "Eingegebener Text: test" und nicht die gleiche Seite, die so aussieht als hätte einfach jemand "reload" gedrückt).
Also verhältet sich das serverseitige Script doch offenbar wie gewünscht.
Eventuell ist meine Idee des submit()-Aufrufs einfach nicht so machbar?
Das könntest du herausfinden, wenn du sie mal ausprobierst.
Im genannten Dokument hast du das noch gar nicht gemacht.
MfG ChrisB
Danke für die Antwort, hier ein paar Anmerkungen:
Ich scheine hier nichts grundsätzliches falsch zu machen, denn ich sehe wie der Text "test" in das Feld geschrieben wird und danach eine Server-Anfrage stattfindet.
Da siehst du mehr als ich - denn von dem erwähnten JavaScript-Code kann ich nichts entdecken in deinem Beispiel-Dokument.
Wie erwähnt wird das JavaScript als Firefox-Plugin ausgeführt und wird daher erst am Client eingefügt, erscheint daher nirgendwo am Server.
Das Resultat ist jedoch wieder die gleiche Seite wie vorher und nicht die tatsächliche Serverantwort (erwartet wird wie bei manueller Eingabe eine leere Seite mit dem Text "Eingegebener Text: test" und nicht die gleiche Seite, die so aussieht als hätte einfach jemand "reload" gedrückt).
Also verhältet sich das serverseitige Script doch offenbar wie gewünscht.
Nein, nochmal zur Erläuterung:
Soll: Nach einem simulierten "Klick" auf den submit-button werden die Daten zum Server geschickt. Der Server schickt darauf hin eine Antwort zum Client (in unserem fall ein HTML Seite mit einem kurzen Text, der die vom Client empfangenen Daten enthält) und diese wird am Client dargestellt. Das ganze kann man sich anschauen, wenn man auf der erwähnten Seite das Formular ausfüllt und abschickt (also alles manuell).
Ist: Ich bekomme nach Aufruf von submit() die selbe (leere) Formular Seite und _nicht_ die Antwort-Seite, die vom Server herausgeschickt wurde / werden sollte.
Eventuell ist meine Idee des submit()-Aufrufs einfach nicht so machbar?
Das könntest du herausfinden, wenn du sie mal ausprobierst.
Im genannten Dokument hast du das noch gar nicht gemacht.
Doch, siehe oben, geschieht am Client, ich sehe das der Rest funktioniert (text in feld eintragen) und sehe das (irgendetwas, nämlich offensichtlich ein reload) passiert, daher scheint auch mein submit() ausgeführt zu werden, allerdings nicht das gewünschte Resultat zu liefern.
Hoffe das war hilfreich!
Holle
Hi,
Ich scheine hier nichts grundsätzliches falsch zu machen, denn ich sehe wie der Text "test" in das Feld geschrieben wird und danach eine Server-Anfrage stattfindet. Das Resultat ist jedoch wieder die gleiche Seite wie vorher und nicht die tatsächliche Serverantwort (erwartet wird wie bei manueller Eingabe eine leere Seite mit dem Text "Eingegebener Text: test" und nicht die gleiche Seite, die so aussieht als hätte einfach jemand "reload" gedrückt).
meine Glaskugel ist soeben aus der Reinigung gekommen, und sie verrät mir etwas. Mistigerweise ist sie jetzt wieder verschmutzt - und dabei könnte ich schwören, ich hätte meine Finger gerade gewaschen. Sei's drum.
Was sie mir verrät ist, dass Deine serverseitige Logik auf die Verwendung des Submit-Buttons abfragt, was natürlich fehlschlägt, wenn nichts und niemand diesen benutzt. Lösung: Entferne aus dem HTML-Code den Namen des Buttons und sorge zunächst dafür, dass Deine serverseitige Logik nicht versagt.
Cheatah