Nachdem ich google schon stundenlang bemühe und keine Lösung finden kann, hoffe ich, dass mir hier jemand helfen kann.
Ich habe eine Schnittstelle zu einer Eventdatenbank auf meiner Webseite gebastelt und brauche dafür aus verschiedenen Dokumenten im Netz Inhalte.
Deshalb dachte ich es ist am besten eine kleine Ajax-Funktion zu basteln, der ich die URL übergebe und die mir dann ganz einfach den responseText über eine Variable zurückgibt.
Im InternetExplorer läuft das auch wie geschmiert. Allerdings scheint der Firefox da entweder ein Problem zu haben oder ganz anders vorzugehen. Jedenfalls gibt er mir dann am Ende der Funktion eine leere Variable aus. Es sei denn ich gebe irgendwas in einem Alert-Fenster aus. Egal was und es muss nur nach dem Request aufgerufen werden. Dann funktioniert es komischerweise. Wenn ich in besagtem Alert-Fenster die variable response ausgebe ist sie trotzdem leer aber das return funktioniert. Kann mir mal jemand erklären was da schief läuft??
Irgendwie hab ich im Netz was dazu gefunden dass ich die ganze sache synchron ablaufen lassen müsste. Aber bisher bin ich da auch zu keinem andern Ergebnis gekommen.
Hier mal der Quelltext der Funktion:
function ajaxReqest( url)
{
var response = ""; // Variable für die zurückgelieferten Inhalte
//Erstellen eines Requests
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!");
//anfrage erstellen (GET, url ,
//request ist asynchron
req.open("GET", url, true);
//req.send(null);
//Pseudofunktion zum auslesen der Daten
req.onreadystatechange = function(){
switch(req.readyState) {
case 4:
if(req.status!=200) {
alert("Fehler: "+req.status);
}else{
//schreibe die antwort auf die variable
response = req.responseText;
//req.abort();
}
break;
default:
return false;
break;
}
//writeFromAjax( response); //schreibt die daten nochmal auf eine globale variable
};
//req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(null);
writeFromAjax( response); //schreibt die daten nochmal auf eine globale variable
writeFromAjax( response); //schreibt die daten nochmal auf eine globale variable
//return response;
}