Ajax Problem! IE funzy, FireFox mag nicht!

Player1005

Grünschnabel
Ajax Problem! IE , FireFox mag nicht!

Hi Leute,

ich habe hier ein kleines Problemchen. Mein Ajax will nicht so wie ich!
Mit dem IE es wunderbar, aber mit dem FF überhaupt nicht.
zur info: das php das ich aufrufe bringt mit der 'echo'-methode zurück, also kein xml! Sollte aber trotzdem kein problem sein.

Hier ist mein Code.
Den Alerter "biste da?" kriege ich nie zu sehen...

Code:
var response = "blabla" ;

function ServerRequest(DBID)
{
sndReq(DBID);
}

function sndReq(DBID) {
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
http = new ActiveXObject("Microsoft.XMLHTTP");
}else{
http = new XMLHttpRequest();
http.overrideMimeType('text/xml');

}
http.open('GET', 'http://localhost/fillme.php?action=' + DBID, false);

alert(http.readyState );
http.onreadystatechange = handleResponse;
alert(http.readyState );
http.send(null);
}

function handleResponse()
{
alert("biste da?");
if(http.readyState == 4)
{
if (http.status == 200)
{
response = http.responseText;
if(response.indexOf('|' != -1))
{
response = response.split("|||");
response = response[1];
}
}
}
}
Vielen DAnk für Hilfe!
PL
 
Zuletzt bearbeitet:
AJAX steht für asynchronous Javascript and XML :
Deine Serveranfrage ist jedoch nicht asynchron....da du den 3. Parameter beim open() auf "false" gesetzt hast.
Setze ihn auf true, und es sollte gehen...weil die Anfrage dann asyncron erfolgt.
 
Ja, ich weiss das es asyncron wird wenn ich es auf 'true' setze.
Aber das will ich ja eben NICHT!
mein Skript funktioniert sonst nicht, da ich eine Variable brauche die der AJAX aufruf zurück bringt.
 
naja... wenn du eine idee hast, wie ich eine variable vom server wieder bekomme, die ich direkt im script anschliessend verwenden muss, dann soll es mir recht sein.

Der Knackpunkt ist, das waehrend das ajax auf die antwort vom server wartet, das restliche skript durchläuft - und die variablen die ich bräuchte sind noch 'null' bzw 'undefined'.
 
Ich seh da nicht, was weiterläuft.
Warte halt, bis der readyState 4 ist...dann ist die Antwort da.

Um mal die Technik zu erklären:
Um ein paar Zeilen Skriptcode abzuarbeiten, benötigt es ein paar Milliekunden.
Um einen Server zu kontakten, bedarf es weitaus mehr Zeit... halt solange, wie es dauert, die Datenmenge(Anfrage) zum Server zu schicken + Verarbeitungszeit beim Server + Zeit, die Daten(Antwort) wieder in Empfang zu nehmen.

Beim Testen auf dem heimischen Rechner mag das(synchron) vielleicht mal hinhauen... beim Live-Einsatz jedoch todsicher nie.... daher muss asynchron gearbeitet werden.
 
hast du schon mal mit ajax gearbeitet?
trotz funktionsaufruf mit "warte auf readystate = 4" laeuft der restliche Code weiter!
 
Sicher hab ich damit gearbeitet...und klar, läuft der Rest weiter.
Wenn du aber das Ergebnis in einer Funktion verarbeitest, welche beim onreadystatechange aufgerufen wird...und welche nur beim readyState 4 ihr eigentliches Werk verrichtet(genau so, wie es handleResponse() bei dir gerade tut)...dann wüsst ich nicht, wo das Problem liegt.
 

Neue Beiträge

Zurück