Ostatnio ajax to co najmniej polowa, jak nie wiecej wyzwan, jakie mam w pracy. Postanowilam zebrac to wszystko jakos do kupy i napisac mini poradnik dla osob ktore musza z ajaxem zawrzec blizsza znajomosc.
Jesli napisalismy request ajaxowy, ktory powinien cos zwrocic a nic sie nie dzieje to powinnismy:
1. sprawdzic, czy przekazany adres w ogole odpowiada, np kopiujac go do przegladarki;
2. sprawdzic w firebugu czy innym srodowisku wspomagajacym prace dewelopera, czy JS nie rzuca nam jakims bledem;
3. jesli oczekujemy jsona, to trzeba sprawdzic, czy dane sa wyslane jako application/json. Kazdy typ danych ma swoj content-type, z jakim serwer powinien go zwrocic;
4. jesli request jest wysylany do strony w innej domenie lub subdomenie to jedyny sluszny typ danych to jsonp, a parametry mozna przeslac tylko getem (hint dla userow jQuery - w porzypadku cross-domain zapytan najlepiej mi dziala metoda jQuery.getJSON());
5. przegladarka cache'uje js, wiec warto dobrze odswiezac strone podczas sprawdzania rezultatow.
To tyle. Mnie zabawa za zapytania pomiedzy domenami zajela 2 dni... ale jestem bogatsza o te wiedze :)
Blog o technologiach frontend (javascript, html, css, react) oraz o tym co się zdarza w życiu informatyka.
Pokazywanie postów oznaczonych etykietą ajax. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą ajax. Pokaż wszystkie posty
poniedziałek, 16 lipca 2012
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ć...
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ć...
Subskrybuj:
Posty (Atom)