form.submit() funktioniert nur in opera
Twilo
- javascript
Hallo,
warum wird das folgende Formular nur bei Opera abgesendet?
function getState(url, selection){
var form = document.createElement('form');
var input = document.createElement('input');
form.method = 'get';
form.action = url;
input.type = 'hidden';
input.name = 'selection';
input.value = selection;
form.appendChild(input);
form.submit();
}
Firefox 2.x und der Internet Explorer senden das Formular nicht ab.
Firebug und die Fehlerkonsole zeigen keinen Fehler an.
Die Funktion wird mit ein Klick auf ein a-Element per onclick aufgerufen.
mfg
Twilo
Hallo Twilo,
Schuß ins blaube; vll muss das Formular auch ins Dokument gehangen werden?
Mit freundlichem Gruß
Micha
Hallo,
Schuß ins blaube; vll muss das Formular auch ins Dokument gehangen werden?
die Funktion sieht jetzt wie folgt aus
function getState(url, selection){
var form = document.createElement('form');
var input = document.createElement('input');
form.method = 'get';
form.action = url;
input.type = 'hidden';
input.name = 'selection';
input.value = selection;
form.appendChild(input);
document.appendChild(form);
form.submit();
}
jetzt verschickt Opera und der Internet Explorer 7 das Formular.
beim Firefox 2.0 erhalte ichz folgende Fehlermeldung im Firefug
Node cannot be inserted at the specified point in the hierarchy" code: "3
versucht der Firefox das Element nach </html> einzufügen?
mfg
Twilo
Hallo Twilo,
versucht der Firefox das Element nach </html> einzufügen?
Das sagt Dir der Auswahlquelltext im Fox. Markiere mit Strg+A das Dokument und wähle es im Kontextmenü. Ich hätte es ggf. mit
document.getElementsByTagName("body")[0].appendChild(form);
versucht.
Mit freundlichem Gruß
Micha
Hallo,
document.appendChild(form);
Der document-Knoten hat nur ein Kindknoten, nämlich das Dokument-Element namens html. Weitere Knoten kannst du ihm nicht anhängen. Benutze wie gesagt das body-Element, das geht am einfachsten über document.body.
Mathias
Moin!
Warum machst du es dir so kompliziert?
function getState(url, selection){
var form = document.createElement('form');
var input = document.createElement('input');
form.method = 'get';
form.action = url;
input.type = 'hidden';
input.name = 'selection';
input.value = selection;
form.appendChild(input);
form.submit();
}
Du hast einen GET-Request mit nur einem einzigen Parameter auf eine URL.
Simple Lösung für dieses Problem:
~~~javascript
function getState(url,selection){
location.href=url + "?selection=" + encodeURIComponent(selection);
}
Das ist simpel, leicht verstehbar, wegen des Verzichts auf DOM-Operationen vermutlich auch deutlich performanter, und funktioniert mutmaßlich in deutlich mehr Browsern, als du jetzt getestet hast.
Die Funktion wird mit ein Klick auf ein a-Element per onclick aufgerufen.
Das böte durchaus noch ein paar weitere Ansätze für unobtrusive Scripting, man könnte onclick die URL des Links (mit einer Parametervorbelegung, die dem Ziel Abwesenheit von Javascript signalisiert) mit den passenden Daten versorgen.
- Sven Rautenberg
Hallo,
Du hast einen GET-Request mit nur einem einzigen Parameter auf eine URL.
Simple Lösung für dieses Problem:
function getState(url,selection){
location.href=url + "?selection=" + encodeURIComponent(selection);
}
warum einfach, wenn es auch kompliziert geht ;-)
ich frag mich, warum ich darauf nicht selber gekommen bin...
mfg
Twilo
--
[Farbtabelle](http://www.farb-tabelle.de)