form submit ohne reload

BlueMona

Grünschnabel
Hallo zusammen,

ich habe ein Problemchen an dem ich schon seit Tagen hänge.
Ich möchte folgende Anfrage an meinen Webserver absetzen:

HTML:
<form method="GET" action="/">Wert<SELECT name="item"></OPTION><OPTION VALUE="size">TRUE</OPTION>input type="submit" value=" set "></form>

Das funktioniert soweit auch so wie es soll. Das einzige was mich stört ist der Browserreload nachdem man den Button drückt. Da ich schon ein AJAX Skript am laufen habe das mir alle 200 ms die Zellen meiner Tabelle, die auf der Page dargestellt sind aktualisiert und die ich mit der form verändere, ist der Reload ziemlich überflüssig und macht mir jetzt sogar bei der nächsten Ausbaustufe massive Probleme.

Nun zu meiner Frage. Gibt es eine Möglichkeit diesen Reload auf einfachste Weise Clientseitig zu unterdrücken? Am liebsten wäre mir ein HTML Attribut oder so ;) Serverseitig lässt sich nicht viel machen da es sich um einen Embedded Webserver handelt der nur einfachste GET-Anweisungen verarbeiten kann und das soll auch so bleiben :)

Bin um jede Hilfe dankbar!
 
Machs doch mit Ajax

statt input type="submit" machst type="button" und ein onclick="ajax_schick_mein_form_ab();"

Musst dir dann nur per JS den GET-String selbst bauen und dann führst den request aus.
 
Danke für den Tipp! Ich hab mal was angefangen, aber es ist noch irgendwas nicht ganz rund glaube ich :( Findet jemand den Fehler? Nicht über das fehlende cgi oder php Skript wundern in der GET-Anfrage. Das ist ok so, weil es wie gesagt kein voller Weberver ist ;)

HTML:
</html>
<body>
<script type="text/javascript">
var mygetrequest=new ajaxRequest()
mygetrequest.onreadystatechange=function()
{
 if (mygetrequest.readyState==4)
 {
  if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1)
  {
   document.getElementById("result").innerHTML=mygetrequest.responseText
  }
  else
  {
   alert("An error has occured making the request")
  }
 }
}
var name=encodeURIComponent(document.getElementById("b").value)
var value=document.getElementById(selectid)
mygetrequest.open("GET", "/?"+name+"="+value+, true)
mygetrequest.send(null)
</script>

<SELECT id="b" onchange="ajaxRequest()"><OPTION VALUE="1">TRUE</OPTION><OPTION VALUE="0">FALSE</OPTION></SELECT>
</body>
</html>
 
Was geht denn nicht?

Also ein ergebniss solltest du mit dem beispielcode eh nicht sichtbar bekommen

document.getElementById("result")

es gibt kein element 'result'

var mygetrequest=new ajaxRequest()
da erstellst du ein object vom type ajaxRequest

onchange="ajaxRequest()"
und da willst ne funktion mit gleichem namen aufrufen.
 
Moin,

bevor überflüssigerweise Kanonen geladen werden, um Piepmätze damut zu meucheln:
Willst du das Formular nur senden, oder brauchst du auch irgendein Feedback vom Server?

Falls du kein Feedback benötigst, ginge dies recht einfach, auch ohne Javascript.

Beschreibe doch einfach mal, was der Sendevorgang des Formulars bewirken soll :)
 
Das Formular soll folgende HTTP Anfragen auslösen "GET /?bi=1" oder "GET /?bi=0". Deswegen auch der SELECT. Mehr isses nicht. Ich brauch so um die 8 solcher Formulare. i wird also von 1 bis 9 gehen. Der Server kann mit einer so aufgebauten Anfrage etwas anfangen. Es geht also nur darum wie bekomme ich die Anfrage ohne ein Reload des Browsers abgeschickt? Ich hab von AJAX nicht viel Ahnung muss ich zugeben, aber es muss nicht perfekt sein, da es eh nur im LAN privat läuft. Auf der Seite läuft schon ein AJAX Skript, dass mehrere Tabelle mit einer XML Datei füttert die ich vom Server kontinuierlich bekomme. Da ich mit den obigen Anfragen Teile der Tabellen verändere ist ein Reload der ganze Seite also nicht erforderlich wegen dem schon vorhandenen Skript.
 
Zuletzt bearbeitet:
Naja, wenn du keine Antwort benötigst, sollte es reichen, das Formular in ein anderes Zielfenster zu Senden, als das aktuelle.

Code:
<form target="versteckt">
<!-- Formularelemente-->
</form>
<iframe name="versteckt" href="about:blank" style="display:none"></iframe>
 
Danke, das versuche ich gleich mal!

Update:

BINGO, genau so geht es! Und ich bin froh kein neues Skript zu benötigen. Denn meine Devise war eigentlich keep it simple ;)
Viele, vielen Dank!
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück