[JavaScript] - Ajax-Request führt Operation zu spät aus - verdrehte Welt?

cppnap

Lt. Junior Grade
Registriert
Nov. 2008
Beiträge
487
Hallo,

ich möchte eine Anfrage ins Backend schicken via Jquery Ajax und habe gerade das Problem dass die Zuweisungen nicht so funktionieren wie Sie es sollen:

Code:
function userButtons(value, row, index) {
    var button = "A";
    $.ajax( {
       url: "userTableButtons",
       method: "GET",
       dataType: "JSON",
       success: function(data) {
           button = "B";
           console.log(button);
       }
    });
    console.log("-" + button);
    return [button].join();
}

Das Ajax-Request bekommt erfolgreich seine Daten vom Backend übermittelt aber nichts hat funktioniert, deswegen habe ich testweise den Button auf A (vorher) und B(nachher) gesetz.

Ich habe 2 Ausgaben in der Konsole und da zuerst das Ajax-Request ausgeführt wird, müsste der Output in der Konsole als "B-B" sein, er ist aber "-AB", das heißt die 2te Ausgabe kommt zuerst...und dann erst die innerhalb des Requests.

Ich raffs nicht, was mach ich hier falsch?
 
Hi,

das "A" in AJAX steht für asynchron! Wenn du willst, dass etwas erst nach dem serverseitigen Abarbeiten ausgeführt wird hilft es dir nicht, wenn du es einfach nur unter den AJAX-Request schreibst, du musst es in die Success-Methode oder einen Callback packen!

Du scheinst das Prinzip noch nicht wirklich verstanden zu haben, was asynchrone Abarbeitung bedeutet.

Überzogenes Beispiel: Dein Server braucht 10 Minuten für die Bearbeitung des Request. Dann kommt das, was bei dir in "Success" steht auch erst nach 10 Minuten - das scheint dir nicht so ganz bewusst zu sein.

VG,
Mad
 
der request wird asynchron ausgeführt.. als workaround kannst du async auf false setzen

Code:
    function userButtons(value, row, index) {
        var button = "A";
        $.ajax( {
           url: "userTableButtons",
           method: "GET",
           dataType: "JSON",
           async: false,
           success: function(data) {
               button = "B";
               console.log(button);
           }
        });
        console.log("-" + button);
        return [button].join();
    }
 
Ich bin so blöd, das gibt's gar nicht - :freak:

Ihr habt Recht, danke für die schnelle Info - Ich sollte vielleicht doch mal schlafen gehen :D
 
Zurück
Oben