httpRequest statt action "kontaktformular"

Bexsta

New member
Hallo..

zur zeit sieht es so aus das durch die action im formular die seite neu geladen wird, allerdings sollte genau in diesen schritt nicht die seite neu geladen werden sondern ein request zu einer dankes seite statt finden! wie kan soetwas ausshene

vielleicht hat der ein oder andere auch ein link dazu

ask for a little bit of help!
 
Zuletzt bearbeitet:
ich will versuchen es genauer zu beschreiben..die website besteht aus festen elementen wie menue, header usw.. der body wird über eine httpRequest aktualisiert sprich der home-seiten content wird schon durch xml geladen genauso wie das kontakt formular!
wenn nun also durch die action die seite neu geladen wird..hollt sich die seite automatisch die xml der startseite wiede ran..habe bereits probiert in onsumbit die funktion zum requesten einzuharken aber es geht leider nicht bei der action wird explitziet eine url gefordert allerdings gibt es keine konkrette url da htmlrequest! in onsumbit habe ich das gefühl, die funktion wird zu frühgestartet und danach sprint wieder die action ein und fürhrt sie wieder auf die home seite!

hab ich da irgendwo einen denkfehler? oder stell ich mch nur zu blöd an ;)
 
hab ich da irgendwo einen denkfehler? oder stell ich mch nur zu blöd an ;)
nein, du liest nur nicht richtig. auf selfhtml steht auch was zum returnwert von onsubmit.
und die url beim form kannst du ja auf die selbe adresse legen wie den request. dann kommt, wenn js deaktiviert ist, wenigstens das formular beim server an und die antwort beim anwender.
 
die url beim form kannst du ja auf die selbe adresse legen wie den request. dann kommt, wenn js deaktiviert ist, wenigstens das formular beim server an und die antwort beim anwender.

sry steh grad aufn schlauch..kannste das evtl nochmal genau beschreiben, weil eigendlich gibt es garkeine url zu dem kontaktformular..habe lediglich eine funktion die das kontaktformular aus eine xml holt!

die ajax geschichte is für mich auch absolutes neuland muß mich da erstma reinfummeln!
 
Zuletzt bearbeitet:
weil eigendlich gibt es garkeine url zu dem kontaktformular..
nicht? du willst doch einen request senden. den sendest du doch an eine url?! das formular macht nichts anderes. es lädt nur die antwort als neue seite, wobei es dir beim xhr selbst überlassen ist, was du mit dieser antwort machst.

habe lediglich eine funktion die das kontaktformular aus eine xml holt!
was har das mit dem form submit zu tun?
 
nicht? du willst doch einen request senden. den sendest du doch an eine url?! das formular macht nichts anderes. es lädt nur die antwort als neue seite, wobei es dir beim xhr selbst überlassen ist, was du mit dieser antwort machst.

ok..an welcher stelle kan ich die antwort denn händeln?

was har das mit dem form submit zu tun?

naja so ganz is die ganz geschichte nicht in meinem kopf
 
Zuletzt bearbeitet:
naja ich bin dem ajax noch nicht so mächtig deshalb, deshalb wird es evtl etwas planlos anhören..

eine fomular wird abgeschickt die action kommt zum einsatz und lädt die seite neu und bin dadurch wieder auf der start seite. wollte jedoch genau dann ein request starten um eine dankes seite oder ähnliches zu laden.

habe leide keine ahnung wie ich nach dem versenden ein request starte.

oder gibt es die möglichkeit die callback funkton aus php nach dem erfolgreich versenden zu beeinflußen das eine bestimmte xml datei geladen wird bzw. die dankes seite???
 
Zuletzt bearbeitet:
also ein http-request machst du jedesmal, wenn du eine seite neu lädst! Was du meinst ist ein ajax request. Das absenden kannst du verhindern, wenn du im onsubmit event false zurückgibst.
Code:
formular.onsubmit = function() { return false; }
in der gleichen Funktion kannst du dann deinene ajax-request starten.
Code:
formular.onsubmit = function() {
  starteAjaxRequest();
  return false;
}
in der funktion starteAjaxRequest erzeugtst du ein xmlhttprequest objekt. Mit onreadystatechange kannst du herausfinden, wann der request fertig ist.
Code:
deinxmlhttprequestobjekt.onreadystatechange = function() {
  if(deinxmlhttprequestobjekt.readyState == 4) { //fertig
    alert(deinxmlhttprequestobjekt.responseText/responseXML);
  }
}

http://openbook.galileocomputing.de/javascript_ajax/
 
wie werden denn jetz die variablen sprich die user eingaben der inputs weitergegeben? die methode des foms wird ja dann anscheinend nicht mehr genutzt..

müßte ich vars direkt mit in die funktion übergeben und mit send oder open mitliefern?
 
jup
Code:
var queryStr = "?";
for(var i=0; i<formular.inputs.length; i++) {
  queryStr += formular.inputs[i].value + "&";
}
queryStr = queryStr.substr(0,-1);
 
danke für dem buchtipp! klasse buch, ajax wurde einwandfrei erklärt!

habe noch eine kleine frage zur antwort von der serverseite.

woher weiß onreadystatechange das php alles verarbeitet hat und fertig ist?

was muß von der php seite zurückgegeben werden damit es weiter geht?
 
Zuletzt bearbeitet:
du musst im php-code schon überprüfen, ob die mail versand wurde oder nicht. Jenachdem sendet er dir true oder false zurück.

php
Code:
if(mail(p1,p2,...)) {
  echo "true";
}
else echo "false";
js
Code:
if(obj.responseText == "true") location.href = "deineseite.html";

edit: ich glaube ich hab dich falsch verstanden. onreadystatechange ist keine Funktion sondern ein event. Der Server sendet verschiedene Signale an den Client und der feuert dann das event onreadystatechange.
 
Zurück
Oben