Matti Mäkitalo: Problem mit Datanbankabfrage per AJAX

Beitrag lesen

Hi,

Verschiebe einfach den Teil deines Skriptes aus deinem Aufrufcode in die Callback-Funktion, welcher von der Antwort auf deinen Request abhängig ist.

Hab gedacht, die onreadystatechange-Funktion ist die Callback-Funktion, die dann aufgerufen wird?

Ich poste mal deinen JavaScript-Schnippsel von oben:

function checkquant(){  
  count = 0;  
  xmlget = getXMLHTTP();  
  //xmlget.overrideMimeType('text/xml; charset=ISO-8859-1');  
  xmlget.open("GET", "var/config.php?action=checkquant");  
  xmlget.onreadystatechange = function(){  
    if ( xmlget.readyState == 4 && xmlget.responseText) {  
      var status = xmlget.responseText.split(".");  
      for (var t = 0; t < status.length; t++) {  
        if(status[t] == 1) {  
          document.getElementById('hint_'+t).innerHTML = 'Meldung';  
          count++;  
        }  
      }  
    }  
  }  
  xmlget.send(null);  
  if(count >= 1) return false;  
  if(count == 0) return true;  
}

Ja, in onreadystatechange wird die callback-Funktion angegeben.
Die letzten beiden Zeilen der Funktion checkquant() aber sind abhängig vom Ergebnis deiner Abfrage. Deswegen solltest du diese in die Callback-Funktion verschieben.

In diesem Fall musst du deinen Code anderst gestalten. checkquant kann dir zu dem Zeitpunkt, an dem es beendet wird, bei einem asynchronen Request das gewünschte Ergebnis nicht liefern. Du musst deinen Rückgabewert anders setzen lassen. Üblich wäre z.B., checkquant eine callback-Funktion zu übergeben, welche aufgerufen wird, wenn dein Ergebnis diesen oder jenen Wert bekommt.

Weitere Hinweise können wir dir aber nur geben, wenn du uns sagst, wie du checkquant zu nutzen gedenkst.

Bis die Tage,
Matti