richiehabbie: AJAX in einer Funktion mit Rückgabewert Problem im Firefox

Beitrag lesen

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;  
					}