Wieso funktioniert mein JavaScript nur im Debugmodus (von Firefox)?

...komplette Frage anzeigen

1 Antwort

Der XMLHttpRequest ist eine asynchrone Operation, d.h. deine Variable "Tags" wird erst dann "befüllt" sobald die Antwort des Servers da ist. Der Rest deiner Funktion läuft aber schon munter weiter, während noch auf die auf die Antwort gewartet wird. In dem Moment wo die Antwort des Servers ankommt, ist die Funktion schon längst beendet. 

Du musst also den Code, der die HTML-Elemente mit dem Ergebnis befüllt in den onreadystatechange-Callback verschieben:

AJS.$("#vergeben").click(function() {
isOpen = true;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
var tags = xhr.responseText;
var tagsaTB = document.getElementById('tagsa');
var tagsdTB = document.getElementById('tagsd');
tagsaTB.value = tags;
tagsdTB.value = tags;
dialog.gotoPage(0);
dialog.gotoPanel(0);
dialog.show();
}
}
xhr.open('GET', '/plugins/servlet/get-tags?pageid=' + AJS.params.pageId, true);
xhr.send(null);
});
Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?