• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage Ajax-Schleifendurchläufe (asynchron) zählen

Dieter!

Neues Mitglied
Hallo,

ich versuche hier die erfolgreichen Datenbank-INSERTs zu zählen, bekomme aber in dem alert() immer "0" zurück.

Javascript:
            function jsVorlageSpeichern()
            {
                $("#kreisel").html("<img src='images/kreisel.gif' />");                                    // Kreisel anzeigen
                var inserts = 0;
                
                $("#speiseplanung textarea").each(function(pos, textarea)       
                {
                        let DATA = {  
                            tagID: textarea.name.split("][")[2],
                            artikelnummer: $("#artikelnummer" + textarea.name.split("][")[2]).val(),
                            menueText: textarea.value
                         };        

                    if (textarea.value.trim())
                    {
                        $.post("ajax/ajaxMenueplanVorlageSpeichern.php", DATA, function(phpData) { if (phpData==1)  {  inserts++;  } }

                        console.log("inserts nach  $.post: ",  inserts);  // hier werden nacheinander alle INSERTs ausgegeben
                    }
                }                         );

                $("#kreisel").html("");                    // Kreisel ausblenden
                alert('Die Vorlage wurde mit ' + inserts + ' Artikeln gespeichert.');  // hier ist "inserts" immer "0"
            }

Ich verstehe die asynchrone Abarbeitung so, dass die Ajax-$.posts in der Schleife "angetriggert" werden, aber alert() schon ausgegeben wird bevor die DB Anweisungen abgeschlossen sind. Aber wie kann ich nun die erfolgreichen Datenbank-INSERTs zählen?

Im nächsten Schritt möchte ich dann ein Spinner/Kreisel vom Start bis Ende anzeigen lassen. Ich vermute, dass der auch wegen der asynchrone Abarbeitung so nicht funktioniert.

Vielen Dank schonmal für eure Hilfe.
 
Werbung:
Super, vielen herzlichen Dank, das funktioniert perfekt.
Schön verrückt dies Asynchrone. Ich hatte zuvor $.ajax() mit async:false verwendet. Das war einfacher, sollte aber wohl, so wie ich das verstanden, habe, nicht mehr verwendet werden.
 
Werbung:
So hatte ich das natürlich nicht versucht. Ich weiß auch auch nicht ob ich mich jemals an dies Kryptische gewöhne. Auf jeden Fall funktioniert es wieder mal super und ich lass auch diese elegantere Variante in meinem Programm.
Was soll ich sagen, nochmal ganz herzlichen Dank für deine Hilfe.
 
Zurück
Oben