Warten Sie auf AJAX, bevor Sie mit der separaten Funktion fortfahren

8

Okay ... um zwei Uhr morgens, hier ziehe ich die Grenze. Hilfe ... bevor mein Laptop aus dem Fenster geht. :)

Ich habe versucht, setTimer, Callbacks und alles andere zu verwenden, was mir einfällt (zusammen mit einigen anderen Stackoverflow-Hinweisen natürlich). Ich habe alles ausgezogen, also lasse ich nur den Basiscode.

Was ich suchen möchte, ist parseRow () aufzurufen und bevor es den Datensatz am Ende speichert, muss ich die zugehörige Kategorie (via AJAX) holen; es bläst jedoch direkt vorbei, so dass die Kategorie immer "undefiniert" ist.

%Vor%     
glassfish 02.07.2012, 08:09
quelle

2 Antworten

13

AJAX steht für asynchron . Das bedeutet, dass saveRecord in Ihrem ursprünglichen Code ausgeführt wird, bevor der Client die Antwort vom Server erhält (und abhängig von der $.ajax -Implementierung möglicherweise vor dem Senden des Clients) die Anfrage an den Server).

Außerdem scheinen Sie falsch zu verstehen, wie Funktionen in JS funktionieren. var category = autoSelectCategory(payee); setzt die Kategorie auf den Rückgabewert von autoSelectCategory ; aber die Funktion autoSelectCategory in Ihrem Code gibt nichts zurück.

Auf der anderen Seite kann der data Rückgabewert Ihrer anonymen Funktion nur von $.ajax function benutzt werden (und $.ajax wahrscheinlich ignoriert den success Parameter Rückgabewert).

Hier ist der Code, der funktionieren sollte:

%Vor%     
penartur 02.07.2012, 08:11
quelle
9

Verwenden Sie nicht die Option async: false . Es ist ein reines Übel (blockiert alle Skripte im Browser und sogar andere Tabs!) Und ist seit jQuery 1.8 veraltet. Sie sollten Rückrufe verwenden, wie es immer beabsichtigt war.

%Vor%     
freakish 02.07.2012 08:14
quelle

Tags und Links