Ajax Request wird an die Adressleiste gehängt
phil
- javascript
Hallo.
komischerweise wird alles in die ADressleiste weitergegeben obwohl ich auf POST gestellt habe.
/*
* Request erzeugen
*/
function getReq(){
var req = null;
try{
req = new XMLHttpRequest();
} catch (ms){
try{
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch (nonms){
try{
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed){
req = null;
}
}
}
if (req==null) alert("Error creating request object!");
return req;
}
// Einladen
function invite(name,emails,url){
var req = getReq();
req.open("POST","/Invite/perEmail/", true);
req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
req.onreadystatechange = function(){
switch(req.readyState) {
case 4:
if(req.status!=200) {
return false;
}else{
return false;
}
break;
default:
return false;
break;
}
};
req.send("name="+name+"&emails="+emails+"&url="+url);
alert("Erfolgreich eingeladen!");
}
Woran liegt das?
Ich möchte die Daten per $_POST abrufen können ohne das sie oben in der Leiste stehen.
Gruß, phil
hi,
Woran liegt das?
Es liegt daran, dass Dein JS-Handle, was den Request machen soll, nicht richtig tut. Mit der Request-Method hat das nichts zu tun.
Horst Haselhuhn
Es liegt daran, dass Dein JS-Handle, was den Request machen soll, nicht richtig tut. Mit der Request-Method hat das nichts zu tun.
Wie muss er denn aussehen. deine Deutung hilft mir nicht weiter.
moin,
Es liegt daran, dass Dein JS-Handle, was den Request machen soll, nicht richtig tut. Mit der Request-Method hat das nichts zu tun.
Wie muss er denn aussehen. deine Deutung hilft mir nicht weiter.
Je nach dem von Dir gewünschten Ereignis, was den Ajax-Request auslösen soll. Beispiele: Beim Laden der Seite, bei einem Klick, bei einem Submit usw. (EventHandle).
Viele Grüße,
Horst Morgenröthe
Hi,
komischerweise wird alles in die ADressleiste weitergegeben obwohl ich auf POST gestellt habe.
AJAX sieht du nie in der Adressleiste, egal welche Request-Methode benutzt wird.
Deine Problembeschreibung lässt vermuten, dass du AJAX als Alternative zum Abschicken eines normalen Formulars einsetzt - und weil dein JavaScript fehlerhaft ist, wird es abgebrochen, und deshalb das Formular ganz normal abgeschickt. Und wenn das als Methode GET hat - dann siehst du die Formulardaten tatsächlich in der Adresszeile.
Darüber hinaus scheinst du noch Probleme damit zu haben zu verstehen, wie ein asynchroner Request abläuft.
req.onreadystatechange = function(){
switch(req.readyState) {
case 4:
if(req.status!=200) {
return false;
}else{
return false;
}
break;
default:
return false;
break;
}
};
req.send("name="+name+"&emails="+emails+"&url="+url);
alert("Erfolgreich eingeladen!");
Da du den Request asynchron machst, geht es direkt nach dem Aufruf von send mit dem alert weiter, egal ob der Request erfolgreich war oder nicht.
Und die return-Werte, die du aus der onreadystatechange-Funktion heraus zurückgibst, die verpuffen im Nichts.
Wobei, wenn ich mir das ansehe, dann muss dein Script gar nicht mal unbedingt fehlerhaft sein (s.o.) - sondern das Formular wird auch dann abgeschickt, wenn es fehlerfrei läuft. Den nur Millisekunden zuvor abgesetzten AJAX-Request wird dieser neue Request dann überschreiben.
MfG ChrisB