NetBull
Erfahrenes Mitglied
Hi Leute,
ich kämpfe immer noch mit JavaScript, aber bin nicht mehr ganz so verzweifelt.
Aktuelle möchte ich ein Ajax Request dynamisch gestalten.
Es wird bei Request an PHP der Name einer Klasse übergeben und der Name einer Funktion aus der Klasse, welche dann den Request abarbeiten.
Das klappt auch schon ganz gut.
Aber ich möchte dem Request auch übergeben welche JavaScript Function auf zu rufen ist, wenn ein Response kommt.
So hab ich mir das gedacht:
Soll eine Ajax Anfrage auslösen:
und die hier soll dann ausgeführt werden wenn ein Response ausgelöst wurde
Initiierit den XmlRequest:
Startet den Request
Ich bekomme zwar meine Ausgabe, in dem Fall nur "xxx" aber der Request wird erst nachher ausgelöst, anstatt wie ich nun erwartet hätte, das der Request initiiert wird und dann im Response Fall mein Objekt aufruft.
Was mach ich hier falsch? Oder ist der Weg vollkommener Schwachsinn?
LG deAndro
ich kämpfe immer noch mit JavaScript, aber bin nicht mehr ganz so verzweifelt.
Aktuelle möchte ich ein Ajax Request dynamisch gestalten.
Es wird bei Request an PHP der Name einer Klasse übergeben und der Name einer Funktion aus der Klasse, welche dann den Request abarbeiten.
Das klappt auch schon ganz gut.
Aber ich möchte dem Request auch übergeben welche JavaScript Function auf zu rufen ist, wenn ein Response kommt.
So hab ich mir das gedacht:
Soll eine Ajax Anfrage auslösen:
Code:
function doRequest()
{// wird gestartet wenn ein Button geklickt wird
var resFunc = new function()
{// soll bei einem Response aufgerufen werden
onAjaxResponse();
}
// startet die Ajax Anfrage
startAjaxRequest("test=1&muster=2", false, resFunc);
}
und die hier soll dann ausgeführt werden wenn ein Response ausgelöst wurde
Code:
function onAjaxResponse()
{// soll ausgeführt werden wenn von PHP ein Response geliefert wurde.
var doResponse = new function()
{
// nun soll die Ausgabe der reponseText oder das responseXML sein
alert( "xxx" );
}
}
Initiierit den XmlRequest:
Code:
var gAjaxResponseClassPath = "clsAjaxResponse.php";
function initiateAjaxRequest(aReturnFunction)
{//*** creates an AjaxObject which is valid for all browsers
var XmlRequest=null;
var mReturnFunction = aReturnFunction;
try
{// most browsers, also newer IE-browsers
XmlRequest = new XMLHttpRequest();
}
catch (e)
{
try
{// older brwowsers
XmlRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{// older IE-browsers
XmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (failed)
{//*** if all where failing, return nothing
XmlRequest = null;
}
}
}
// attach a ready-state event to the xmlRequest
XmlRequest.onreadystatechange = function(mReturnFunction)
{
switch(XmlRequest.readyState)
{
case 4:
if(XmlRequest.status!=200)//*** on error states
XmlRequest.responseText = "ERROR #"+XmlRequest.status+" detected! Could not get a response from Server!";
if(XmlRequest.status==200)//*** on good states
{
aReturnFunction.doResponse;
}
break;
}
};
return XmlRequest;
}
Startet den Request
Code:
function startAjaxRequest(aRequestArguments, aIsAsyncrom, aX)
{
var XmlRequest = initiateAjaxRequest(aX);
XmlRequest.open("post", gAjaxResponseClassPath, aIsAsyncrom); //*** request is syncron******
XmlRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
XmlRequest.send(aRequestArguments);
}
Ich bekomme zwar meine Ausgabe, in dem Fall nur "xxx" aber der Request wird erst nachher ausgelöst, anstatt wie ich nun erwartet hätte, das der Request initiiert wird und dann im Response Fall mein Objekt aufruft.
Was mach ich hier falsch? Oder ist der Weg vollkommener Schwachsinn?
LG deAndro