Dani Düsentrieb: per Javascript will Form keine Daten übertragen

Hi Leute

Ich bin hier gerade am verzweifeln! Warum will mir das Formular keine daten übermitteln wenn ich auf Anzeigen klicke? Beim Button klappt das doch einwandfrei.

  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<title>Unbenanntes Dokument</title>  
<script type="text/javascript">  
function senden(){  
	document.getElementById("Anzeige").submit();  
}  
</script>  
</head>  
  
<body>  
<?php  
	echo $_POST["offset"]."<br>";  
	echo $_POST["test"]."<br>";  
	echo $_POST["test1"]."<br>";  
?>  
<form id="Anzeige" name="Anzeige" method="post" action="fromtest.php">  
		<p>  
				<input name="offset" type="hidden" id="offset" value="10" />  
		test  
		<input name="test" type="text" id="test" value="test" />  
</p>  
		<p>&nbsp;</p>  
		<p>test1  
				<select name="test1" id="test1">  
						<option value="1">skdjahfdskajölh</option>  
						<option value="2">asdlkjfasölkjdfsa</option>  
						<option value="3">asldjkfaösdlkj</option>  
				</select>  
</p>  
		<p><a href="" onclick="javascript:senden();">Anzeigen</a></p>  
		<input name="Test" type="submit" />  
</form>  
</body>  
</html>  

Gruß Daniel

  1. Hallo,

    Ich bin hier gerade am verzweifeln! Warum will mir das Formular keine daten übermitteln wenn ich auf Anzeigen klicke?

    möglicherweise übermittelt das Formular seine Daten korrekt (schau mal im Log deines Servers nach, vielleicht taucht der POST-Request sogar auf). Aber so wie du deinen Absendelink notiert hast ...

    <a href="" onclick="javascript:senden();">Anzeigen</a>

    ... konkurrieren hier beim Klicken zwei Aktionen, die theoretisch(!) zeitgleich ausgeführt werden müssten. Erstens wird durch den onclick-Handler die Javascript-Funktion senden() aufgerufen, zweitens wird durch die natürliche Funktion des Links die aktuelle Seite neu geladen.
    Es ist nicht vorhersehbar, welche der beiden Aktionen gewinnt, aber nach deiner Beschreibung scheint es die normale Verlinkung zu sein.

    Wozu verwendest du überhaupt einen Link, der nicht linken soll? Besser wäre es hier, ein anderes Element zu verwenden (button, p, img) und diesem den onclick-Handler zu verpassen[1].
    Und dann kannst du auch noch das überflüssige "javascript:" aus dem Eventhandler entfernen. Das ist als Pseudoprotokoll erforderlich, wenn man Javascript-Code im href-Attribut notieren möchte (und das ist keine "good practise"). Im Eventhandler, der definitionsgemäß sowieso Javascript-Code enthält, hat es eine andere Bedeutung: Es definiert eine unsinnige Sprungmarke mit dem Namen "javascript".

      <p>&nbsp;</p>  
    

    Bäh! Ist das sinnvoller Code? Abstände kann man besser über CSS regeln.

    So long,
     Martin

    [1] Du denkst daran, dass das Formular auch ohne Javascript noch abgesendet werden kann?

    --
    Arzt:    Gegen Ihr Übergewicht hilft wohl nur noch Gymnastik.
    Patient: Sie meinen, Kniebeugen und so?
    Arzt:    Nein, Kopfschütteln. Immer dann, wenn Ihnen jemand was zu essen anbietet.
    1. Hi Martin

      danke für deine Antwort! Ich habe hier nur mal mein Test-Formular gepostet denn eh ich richtig damit anfange will ich wissen ob die Funktionen die ich verwenden will passen, deshalb hier solcher Wikinger-Code.

      Ich habe das mal so umgebaut und jetzt klappts, Danke!

      Daniel