Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery][json] Problem z obiektem
Forum PHP.pl > Forum > XML, AJAX
JACKo
Witam,
W marcu pomyślałem, by pobawić się jQuery. Zrobiłem sobie instalator do strony. Walidacja formularzy, zapis pliku konfiguracyjnego oraz zapytania do bazy. Na lokalnym kompie wszystko chodzi (windows), nawet na zewnątrz po domenie z ddns. Lecz na serwerze zewnętrznym (linux) jest problem. W obu przypadkach json z zapytania $.ajax wraca taki sam. Przynajmniej tak twierdzi FireBug smile.gif
Wynik dałem do alerta i... lokalnie otrzymuje jako [object Object], a z serwera zewnętrznego stringa w postaci json - {"test":11, "status":1}. Co może być przyczyną tego stanu rzeczy. Nadmienię również, że plik wykonywany poprzez ajaxa zawiera:
  1. header('Content-type: application/json; charset=UTF-8');

Czy wpływ może mieć konfiguracja serwera? Oba mają PHP 5.3.x. Zapytanie jest wykonywane metodą POST synchronicznie. Przy odwołaniu się do konkretnego obiektu to lokalnie zwraca poprawną wartość, z zewnętrznego - Undefined. FireBug błędów nie widzi.
Jeśli będzie potrzebny szerszy kod to później wrzucę.

Edit:
Trochę poszperałem i wyszło, że pomogło dodanie parametru do $.ajax : dataType: "json". Jak widać jQuery różnie rozpoznaje dane na różnych serwerach. Warto dodać kilka znaków do kodu wink.gif
Przy testowaniu na IE wyszło, że całkowicie nie chce działać, jakby kod js był wyłączony, a Chrome się za-cache'ował.
camikazee
IE jest bardziej czuły na błędy JS. Jeżeli skrypt jest poprawny, to zwykłe pobranie danych JSONem powinno działać i na IE. Sam wiele informacji przesyłam w ten sposób.
JACKo
Z tym IE zawsze jakieś problemy wink.gif W domu nie byłem w stanie odkryć problemu. Przeglądarka nie informowała o błędach. W pracy mam jakąś starszą wersję i doszedłem, że problemem był przecinek na końcu
[JAVASCRIPT] pobierz, plaintext
  1. var datadb = {
  2. "dbname": $("#dbname").val(),
  3. //...
  4. "tpass": $("#tpass").val(),
  5. };
[JAVASCRIPT] pobierz, plaintext

Został mi jeszcze jeden problem, wprawdzie na osobny temat... wielokrotne wysyłanie żądań ajaxowych. Przy pierwszym przebiegu jest wszystko ok. Nawet każde kliknięcie do ponownej weryfikacji robi to raz. Lecz na 4 etapie daję możliwość powrotu do 2 (poprawienia danych). I w tym momencie z każdym kolejnym użyciem przycisku do sprawdzania poprawności powiększa ilość zapytań tego samego odwołania o 1. Gdybym chciał wykorzystywać opóźnienia to im dłużej bym weryfikował tym dłużej bym czekał na ostateczne zakończenie weryfikacji. Zastanawiałem się nad wykorzystaniem funkcji .abort, ale jakoś nie mam pomysłu jak to zaimplementować mimo googlowania. Jeszcze jestem noobem w tym jQuery wink.gif

Edit:
Problem rozwiązany i można zamknąć temat.
Problem tyczył się, że wracając do funkcji poprzedniej dodawałem kolejną metodą .click (taka sama zawartość). Wystarczyło sprawdzić ifem czy była już tworzona.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.