sobota, 15 października 2011

jak async może skrócić życie developera o kilka lat

To, że nie mam jeszcze siwych włosów jest chyba tylko zasługą ich koloru dobrze wyschniętej słomy.

Piszę "prostą" galerię, oczywiście w JavaScript, a co. Dodatkowo korzystam z ogłupiacza o nazwie jQuery, choć coraz poważniej myślę o porzuceniu jQuery i napisaniu surowego JS. Oczywiście moja aplikacja korzysta z Ajaxa, bo w przeciwieństwie do znalezionych przeze mnie różnych gotowych tworów ma ona obsługiwać nieznaną ilość zdjęć, więc ładowanie ich wszystkich w HTML mija się z celem. Tak więc wymyśliłam sobie, że przy uploadzie plików na serwer dane o pliku oraz jego opisie wrzucane są do pliku txt, który trzyma zserializowany obiekt JSON z danymi wszystkich plików.

No i pobieram sobie Ajaxem wyżej wymieniony plik. Tuż przed operacją Ajaxową zdefiniowałam sobie lokalną dla pliku zmienną do której będzie wczytywany obiekt. W funkcji callbackowej dla success (przypominam, ze pracuję na jQuerowej funkcji $.ajax()) przypisuję sobie uzyskane dane i...

... i nic.

Po dobrych dwóch godzinach szukania ki diabeł, zabawy alertami, Firebugiem itp, coś mnie tknęło i jeszcze raz przeanalizowałam co ja do tej funkcji przekazuję. A jest trochę tych rzeczy. A wśród nich "async" ustawiony na... true...

No to jak ja mogę oczekiwać, że kod, który wykonuje się w funkcji ajax będzie pisał mi coś do zmiennej, która już nie jest używana, bo korzystający z niej kod wykonał się, gdy funkcja ajax wykonywał request...

Zmiana wartości parametru "async" z true na false rozwiązała problem... Oby wszystkie potknięcia dało się tak łatwo rozwiązać...

Brak komentarzy:

Prześlij komentarz