![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 3 Dołączył: 26.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Na początku jak jest teraz i działa.
PHP generuje mi coś w stylu: Kod [{"address":"127.0.0.1:27015","hostname":"Orzeszek #1 FFA [s+ns] (only de_dust2)","map":"de_dust2"}] Kod js, który to obrabia:
Lecz, gdy zmienie troche kod, zamiast enkodowania: Dam np... A wtedy JSON zamienia sie na: Kod {"91.121.112.144:27015":{"address":"127.0.0.1:27015","hostname":"Orzeszek #1 FFA [s+ns] (only de_dust2)","map":"de_dust2"}} To już powyższy kod js, obrabiający JSONa nie działa. Podejrzewam, że te each coś nie działa. Macie jakieś rozwiązanko? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 24.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Tak naprawdę, to pierwszy JSON powinien być niewłaściwie parsowany.
Zauważ, że w pierwszym przypadku masz tablicę z jednym elementem: obiektem. W drugim masz już obiekt (tablicę asocjacyją). Zatem w pierwszym przypadku $H(tablica).each przeleci nie tylko po iteracjach tablicy, ale także po wszystkich metodach obiektu typu tablica (Array), których Prototype trochę dodał. Ten post edytował pepkin88 24.08.2010, 00:34:16 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 782 Pomógł: 153 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Może to ci coś pomoże - zamiast each():
@DOWN: Tak więc problem specyficzny dla Prototype. Nie używałem i sugerowałem się składnią jQuery. Ten post edytował everth 24.08.2010, 13:57:22 -------------------- Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]! |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 24.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Efekt będzie taki sam. Jeżeli for in przeleci po tablicy to uwzględni też wszystkie metody dodane do prototypu Array, a biblioteka Prototype takowe dodała.
Należy więc uważać i stosować $A i $H odpowiednio dla tablic i obiektów (tablic asocjacyjnych, hash tablic). PS: Wszystkie zmienne deklaruj przez var, dzięki temu będą one miały zasięg prywatny, a nie globalny. Ten post edytował pepkin88 24.08.2010, 00:40:19 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 3 Dołączył: 26.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Tak, więc zmiana w "źródle", żeby była tabliczka asosacyjna (tj. to opisywałem), potem zmiana H na A i powinno działać?
W każdym bądź razie o dziwo tak nie jest. Czy H, czy A, to i tak kod wewnątrz pętli .each się nie wykonuje. Nie wazne czy to alert(server), czy to alert("test123");. Po prostu nic. A raczej nazwy nie podobają mu się jako klucze kolejnych tablic. Numerki bez problemu. Jednak nadal są problemy, nawet z liczbami. Ten post edytował Victor152 24.08.2010, 09:11:09 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 24.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Na odwrót: $A - Array - do tablic; $H - Hash - do tablic asocjacyjnych.
Więc piszesz, że nic się nie wyświetla? Sprawdź, np. alertem, czy i w jakiej postaci jest przesyłany ten JSON ( alert(transport.responseText); ). Bo kod jest dobry (jeżeli A i H nie są pomylone) i powinno to działać (u mnie działa, po przepisaniu samego JSONa - nie symulowałem samej ajaxowej transakcji). Aha, jeszcze pamiętaj o średnikach, teoretycznie JavaScript sam uzupełnia brakujące średniki, ale nie zawsze podejmie właściwą decyzję, czy rzeczywiście tego średnika brakuje, czy nie ma go tam być. Ten post edytował pepkin88 24.08.2010, 14:17:35 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 20:47 |