Ich persönlich kann mir nur vorstellen, dass die Schleife während dem Request weiterläuft. Wie könnte ich einstellen, dass die Schleife erst nach dem Ende des Requests weiterläuft?
Jedenfalls solltest du den Ajax-Request keinesfalls auf synchron umstellen.
Das Grundproblem hier ist, dass du Funktionen (Closures) in einer Schleife erzeugst, die Funktion selbst aber asynchron aufgerufen wird, wenn die Schleife schon durchgelaufen ist. Daher ist i == 12. Zu den Suchbegriffen »Closure« und »Schleife« wirst du viele Einträge im Forumsarchiv finden.
Hier sind unterschiedliche Lösungen denkbar, dazu müsste man die Rahmenumstände kennen. Allgemein kannst du den Zählerstand in die Funktion einschließen, indem du eine Closure erzeugst:
var createCallback = function (i) {
// Erzeuge Closure, die den gegenwärtigen Wert von i einschließt
return function (data) {
currentDescriptions[i] = data.test.replace(/\n*/g, '');
});
};
for (...) {
descGet = $.getJSON(URL, {page: myArray[i]}, createCallback(i));
...
}
createCallback ist hier eine Funktion, die eine Funktion erzeugt.
Mathias