Hans Wurst: Ajax [onreadystatechange] wird nicht aufgerufen! Warum nur?

Beitrag lesen

Tach zusammen,

ich baue gerade einen Währungsrecher in unser Warenkorbsystem ein, der mit Hilfe von Ajax den jeweiligen aktuellen Währungskurs holt.

Für diese 6 Länder hole ich die Währungskurse ein, alle einzeln (asynchron).

 LKZ_Arr = new Array(  
  new Array('HK', 'pic_hongkong', 'Hong Kong', 'HKD', 0),  
  new Array('SG', 'pic_singapore', 'Singapore', 'SGD', 0),  
  new Array('MY', 'pic_malaysia', 'Malaysia', 'MYR', 0),  
  new Array('TW', 'pic_taiwan', 'Taiwan', 'TWD', 0),  
  new Array('AU', 'pic_australia', 'Australia', 'AUD', 0),  
  new Array('NZ', 'pic_newzealand', 'New Zealand', 'NZD', 0)  
 );

onload der Seite wird diese Schleife gestartet, die 6 Ajax-Requests absendet

 for(i=0; i < LKZ_Arr.length; i++) {  
  getAjax(LKZ_Arr[i][0], "from=EUR&to="+ LKZ_Arr[i][3]);  
 }

Hier meine Ajax-Funktion

 http_request = false;  
 function getAjax(country, param) {  
  if(window.XMLHttpRequest) {	// Mozilla, Safari  
   http_request = new XMLHttpRequest();  
  }		  
  else if(window.ActiveXObject) { // IE  
   try {  
    http_request = new ActiveXObject("Msxml2.XMLHTTP");  
   }  
   catch(e) {  
    try {  
     http_request = new ActiveXObject("Microsoft.XMLHTTP");  
    }  
    catch(e) {}  
   }  
  }  
			  
  if(!http_request) {  
   alert("Error!\nRequest could not be done!");  
   return false;  
  }  
			  
  http_request.onreadystatechange = function() { getAjaxData(country); }  
  http_request.open("POST", "https://www.example.com/cgi-bin/currencyconverter.pl", false);  
  http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  
  http_request.send(encodeURI(param));  
 }

// Hier die Auswertung

 function getAjaxData(country) {  
  if(http_request.readyState == 4 && http_request.status == 200) {  
  var resXML = http_request.responseText.substring(http_request.responseText.indexOf("<double")+44, http_request.responseText.indexOf("</"));  
  
  for(i=0; i < LKZ_Arr.length; i++) {  
   if(LKZ_Arr[i][0] == county) { LKZ_Arr[i][4] = resXML; }  
  }  
 }  
}

Das Problem ist jetzt, dass wenn ich asynchron die Ergebnise hole, wird die Funktion "onreadystatechange" niemals aufgerufen, also findet keine Verarbeitung statt. Wenn ich es synchron mache, habe ich zusammengewürfelte Ergebnise da es Überschneidungen gibt.

Warum wird beim asynchronen Senden die Funktion nicht aufgerufen?