2009-08-17 9 views
1
var err = ''; 

err += 'err a'; 
myString = 'Blah'; 
new Ajax.Request('/check_me.php', 
    { 
     method:'get', 
     parameters: { 
       'string': myString 
      }, 
      evalScripts: true, 
      onComplete: function(t){ 
       var response = t.responseText; 
       if (response == false) { 
        //do nothing 
       } else { 
        err += 'err b.\n'; 
        //alert(err); 
       } 
      } 
     }); 

err+= 'err c'; 

alert(err); 

Im obigen sollte es "err a" + "err b" + "err c" warnen. Aber ich bekomme nur "err a" + "err c". Wenn ich versuche, mit incomplete zu alarmieren (err), dann kann ich sehen, dass der Text an die Werte angehängt wird, die er früher hatte. In diesem Fall "err a" + "err b". Wenn ich diese Warnmeldung schließe, zeigt die letzte Warnmeldung nur a und c an.Wie fügt man Text an eine Variable innerhalb einer Funktion in Javascript an?

So liest es Wert von einer globalen Variablen, aber nicht zu schreiben.

Wie funktioniert es, d. H. Es auf "b" setzen?

Dank

Antwort

5

Ajax-Anfragen geschehen asynchron, so wird die Ausführung des Javascript auf Ihrer Seite wird auch weiterhin nach dem Ajax-Aufruf versandt wurde, unabhängig davon, ob die Antwort zurückgegeben wurde.

Wenn also Ihr Skript die Variable err alarmiert, ist die Ausgabe, die Sie erhalten, nicht das, was Sie erwarten, weil onComplete noch nicht aufgerufen wurde.

+0

also wie bekomme ich das funktioniert? – TigerTiger

+0

@Wbdvlpr - Fügen Sie nach Abschluss des Aufrufs innerhalb der onComplete-Methode statt nach dem Ajax.Request das ein, was Sie möchten. – karim79

+0

irgendwelche Ideen wie kann ich verfolgen, wenn unvollständig endet ?? Just fyi .. Wenn ich innerhalb der Oncomplete-Funktion alarmiere, dann erscheint diese Alarm-Box vor dem letzten. – TigerTiger

2

"err a err c err b" ist der korrekte Ausgang. Die Bestellung lautet:

  • anhängen "err a";
  • erstellen Sie eine neue AjaxRequest, die die Anforderung beginnt (asynchron)
  • append "err c"
  • AjaxRequest komplette happens "err b"

Sie müssen Anhängen entweder die Anfrage synchron machen (nicht empfohlen) oder verschieben Sie den Anhang von "err c" in die vollständige Methode (wie "err b" ist).

+0

bedeutet dies die letzte Warnung (err) shoule print in der Reihenfolge, die Sie oben angegeben haben? Es tut nicht. – TigerTiger

+0

nur fyi .. Reihenfolge der Ausgabe ist mir egal – TigerTiger

Verwandte Themen