handleResponse - Variable mit DIV-ID des Ziel-DIV übergeben

dwex

Erfahrenes Mitglied
Hallo Leute,

ich arbeite mich gerade in das Thema ein und habe mir aus einem bestehenden Beispielscript meine eigenen Funktionen "gebastelt".

Im Allgemeinen geht es mir darum die Ausgabe abhängig von meiner jeweiligen Vorgabe in einem bestimmten DIV auszugeben ohne dafür immer wieder eine eigene Funktion schreiben zu müssen.

Mit der Funktion ajaxPost() übergebe ich die URL sowie die Daten des Formulars - ausserdem würde ich gerne eine callback-Angabe einfügen um zu bestimmen in welchem DIV die Ausgabe zu erfolgen hat.

Leider kann ich ja der Funktion handleResponse diese Information aus ajaxPost nicht mit übergeben (zumindest funktionierts bei mir nicht).

Nachfolgend mal mein Quelltext:
HTML:
function handleResponse() {
	if((resObjekt.readyState == 4) && (resObjekt.status==200)) {


        if(resObjekt.responseText.search("response-text-login") != -1){
        	document.getElementsByTagName("body")[0].innerHTML = resObjekt.responseText;
        	document.getElementById("wartebereich").innerHTML = '';
        	document.getElementById("wartebereich").style.visibility = 'hidden';
        }else{
        	document.getElementById("hauptbereich").innerHTML = resObjekt.responseText;
        	document.getElementById("wartebereich").innerHTML = '';
        	document.getElementById("wartebereich").style.visibility = 'hidden';
        }



	} else {
		document.getElementById("wartebereich").innerHTML = '<div style="position:absolute; top: 50%; left: 50%; margin-top: -36px; margin-left: -100px; background-color: white; width: 200px; height: 72px; padding: 10px; border: 2px solid rgb(121,183,231);    -moz-border-radius: 5px;">Bitte warten...<br/><br/><img src="./css/redmond/images/ajax-loader.gif"></div>';
		document.getElementById("wartebereich").style.visibility = 'visible';
	}
}



function ajaxPost(url, postData, callback) {

	resObjekt.onreadystatechange = handleResponse;
	resObjekt.open('POST', url, true);
	resObjekt.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	resObjekt.send(postData);

	return false;

}
Ich möchte Quasi die ID "hauptbereich" in handleResponse() dynamisch gestalten.

Vielen Dank für eure Hilfe und Anregungen im Voraus.
 
So könntest du z.B. an "handleResponse" jeden bel. Parameter übergeben.

Javascript:
resObjekt.onreadystatechange = function() {
    handleResponse("foo", "bar");
};
 
Aha - das leuchtet mir soweit ein.

Wie kann ich dann die Parameter aus dem Beispiel in meiner handelResponse weiterverwenden?
 
Sorry,

ich wollte gerade meinen Thread ändern - das habe ich schon durch probieren herausgefunden - vielen Dank!

Ich müsste jetzt wissen wie ich den Parameter optional gestalten kann.

In C oder PHP geht das ja so:
PHP:
function handleResponse($a, $b="irgendwas") {
   blablub
}
Wenn ich jedoch das ganze in JS so mache:
Code:
function handleResponse(a, b="irgendwas") {
   blablub
}
dann funktioniert das nicht.

Ich habe eben manchmal einen Callback und manchmal nicht.
 
Also erst mal vorweg: Du kannst einer JavaScript Funktion mehr oder weniger Parameter übergeben, als sie eigentlich erwartet. Das interessiert die Funktion nicht (und es wird auch keine Warnung oder Fehler geben). Außerdem kannst du über eine Variable (ein Array) namens "arguments" innerhalb der Funktion ebenfalls auf alle übergebenen Parameter zugreifen.

Für dein Beispiel mit den zwei Parametern, bei denen der zweite optional ist, würde man so vorgehen.

Javascript:
function handleResponse(a, b) {
    b = b || "irgendwas";//Wenn b "undefined" ist, wird es auf "irgendwas" gesetzt.

    //und hier normal weiter
}

Oder wenn bei dir "b" ein callback ist, dann prüfe vor dem Aufruf, ob es existiert.

Javascript:
function handleResponse(a, b) {
    if(b)
        b();
}
 
Zurück