Probleme mit dem Absenden einer Form mittels submit()
To bi as
- javascript
0 Felix Riesterer0 ms88
Hallo zusammen,
seit Tagen beschäftigt mich ein Problem, welches ich bisher nicht zu lösen wusste.
Vorab:
Mittels Greasemonkey möchte ich eine Login-Maske beim Besuch ausfüllen (Name, Passwort, Selectauswahl) und diese auch gleich abschicken. (vergleichbar mit einem "wiederlogin beim nächsten Besuch")
Das Ausfüllen der Input-Felder bereitet mir keine Probleme. Bis vor kurzem funktionierte auch noch der Login. Scheinbar wurde der Code der Seite angepasst/verändert, wodurch ich nun auch gezwungen bin, mein Script umzuschreiben:
Die Login-Form sieht wie folgt aus:
<form name="formular" action="" method="post" id="loginFormularNeu" style="display: inline;">
<div style="float: left; width: 113px;">
<label for="login">Login:</label><br>
<input id="login" name="login" class="input1" size="12" type="text"><br>
</div>
<div style="float: left; width: 113px;">
<label for="passwort">Passwort:</label><br>
<input id="passwort" name="passwort" class="input1" size="12" type="password"><br>
</div>
<div style="float: left; width: 114px;">
<label for="sprache">Sprache:</label><br>
<select class="input1" id="sprache_waehlen" name="sprache_waehlen">
<option value="1">wählen</option>
<option value="deutsch">deutsch</option>
<option value="englisch">englisch</option>
</select>
</div>
<div style="clear: both;">
</div>
<div style="width: 340px; margin-top: 10px;">
<input value="einloggen" class="input1" type="submit">
</div>
</form>
Die ausgenommene Zeile bereitet mir dabei Probleme. Das Formular wird nicht abgeschickt, sondern die Loginseite nur neu geladen.
// ==/UserScript==
var username = "username";
var passwort = "passwort";
var sprache = "deutsch";
document.getElementsByName("login")[0].value = username;
document.getElementsByName("passwort")[0].value = passwort;
document.getElementsByName("sprache_waehlen")[0].value = sprache;
// document.getElementById('loginFormularNeu').submit();
Das Beispiel von SelfHTML habe ich bereits getestet:
document.formular.submit(); -> Das Formular wird damit allerdings noch nichtmal abgeschickt.
Die vier Schemas zum Thema Forms habe ich ebenfalls ausprobiert:
document.forms[0].submit(); -> Seite aktualisiert sich permanent
document.formular.submit(); -> Seite wird nicht abgeschickt
document.forms.formular.submit(); -> Seite aktualisiert sich permanent
document.forms["formular"].submit(); -> Seite aktualisiert sich permanent
Eine weitere Möglichkeit habe ich bisher weder über Google noch über SelfHTML finden können.
Sollten weitere Informationen zu dem Formular nötig sein (es gibt noch in die Seite eingebaute Scripte, welche auf Benutzername / Passwort / Sprache vor dem absenden überprüfen), dann reiche ich die natürlich gerne nach.
Ich wäre über jeden Hinweis sehr dankbar.
mfg Tobias
Lieber To bi as,
<form name="formular" action="" ...>
wo soll die Seite denn hingeschickt werden?
Liebe Grüße,
Felix Riesterer.
Hallo Felix,
vielen Dank für den kleinen aber wichtigen Hinweis :)
ich war mir nicht sicher, wo das Script verändert wurde, meine mich aber erinnern zu können, dass im Attribut action ="" etwas stand.
Ich habe mir daraufhin den Quelltext genauer angeschaut und ein Script gefunden, wo mittels JQuery das Attribut action belegt wird. Nach einiger Suche auf dieser Seite und einigen Annäherungsversuchen haben ich dann nun auch den Code anpassen können, dass nun wieder alles funktioniert.
Hier meine individuelle Lösung (falls sich irgendwer nochmal hierhin verirrt):
document.getElementById('loginFormularNeu').action = "http://"+sprache+".zieladresse/login.php";
// Anzeige der Änderung
var test = document.getElementById('loginFormularNeu').getAttribute('action',false);
alert(test);
// Formular wird abgeschickt
document.forms[0].submit();
Danke für die schnelle Hilfe und den Wink mit dem Zaunpfahl :)
Tolle Seite, super Hilfe
Sorry, habe das Fenster zu lange offen gehabt und die anderen beiden Antworten erst jetzt gesehen.
Auch danke an euch.
Der Hinweis war in der Tat korrekt. Die Seite sendet die Informationen an eine andere Seite weiter. Da in dem Attribut nichts drin stand wurde die Seite quasi aktualisiert.
Die ausführliche Korrektur betraf mein Problem zwar nicht direkt, ist aber durchaus ein guter Hinweis, sollte das Problem nochmals auftreten^^
Du musst bei action etwas angeben ;) zb das gleiche oder ein anderes php file.
Hallo,
Du musst bei action etwas angeben ;)
nein, nicht zwingend - ein leeres href-Attribut steht für "dasselbe Dokument". Wenn die aktuelle Ressource, die das Formular enthält, gleichzeitig auch die formularverarbeitende Logik enthält, ist das völlig in Ordnung. Aber das scheint bei Tobias nicht der Fall zu sein, deshalb passiert, was passieren muss: Das Formular wird abgeschickt, und zwar an dieselbe Seite, die das Formular enthält - und damit wird sie neu geladen.
Ciao,
Martin