Wyświetlenie tablicy w formacie Json

Wyświetlenie tablicy w formacie Json
MB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

Witam, mam mały problemik. Próbuje wyswietlic dane w formacie json za pomoca JavaScript (JQuery). Jednak mam problem z wyświetleniem tablicy.

Kopiuj
function server(port, host) {
					$.ajax({
						type : "POST",
						url : "http://biura-adaptacyjne.pl/server.php",
						dataType : "json",
						cache : false,
						success : function(data) {
						var content = '';
						$.each(data.players, function(i, p){
							content += '<li>' + p.nick + '</li>';
						});
						$("#players").html(content);
						}
					});
				}

odpowiedźz serwera:

Kopiuj
{ "name":"Serwer AoS TCB", "online":"2", "slots":"10", "players": [ { "nick":"SkyWhite" , "ping":"80","team":"FOL","points":"0" } { "nick":"MaxyBlack" , "ping":"272","team":"Spectator","points":"0" } ] }
 
dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

Czym się objawia problem? Jakieś błędy w konsoli?

Edit: Zajrzyj w dokumentację jQuery i zrób sobie obsługę error.

MB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

Problem jest w tym, że jesli jest tylko jeden player to wyswietlenia to go wyswietla, ale gdy jest ich juz np dwóch to nie wyswietla się nic.

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

No widzisz, dało się napisać. JSON jest błędny, nie ma przecinka między elementami - czym to generujesz?
Bo w ogóle rozstrzelone to to spacjami, chyba nie generujesz tego ręcznie?

MB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

do wygenerowania uzywam skryptu w pythonie

Kopiuj
{
    "name":"{{server.name}}",
    "online":"{{server.connections|count}}",
    "slots":"{{server.max_players}}",
	"players": [
	{% for player in server.players.values() %}
		{ "nick":"{{player.name}}" , "ping":"{{player.latency}}","team":"{{player.team.name}}","points":"{{player.kills}}" }
		{% endfor %}
				]
}
dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

https://encrypted.google.com/search?hl=en&q=python+json+library - użyj czegoś, nie próbuj wynajdywać koła od nowa, bo póki co Ci krzywe wychodzi ;)

MB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

Niestety, ale modyfikowanie skryptu w pythonie nie jest mozliwe. Przeszukiwanie silnika gry niestety odpada.

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

No cóż, skrypt w pythonie generuje wadliwe dane, więc to jego trzeba poprawić. Jak Ci się silnik w samochodzie zepsuje to raczej nie szukasz problemu przy kołach itd.

Dało by się to obejść nie ładując tego jako json tylko tekst, następnie jakimś regexpem dopisać przecinki, następnie parsować ten json, no ale to już dziwne kombinowanie.

MB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

Nie, nie generuje wadliwych danych. To ja przerobiłem ich sposób wyświetlania z html na json abym mógł ich uzyc w paru skryptach

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

No to skoro przerobiłeś to teraz napraw? Nie ogarniam :/
Generuje wadliwy JSON, to fakt, któremu nie możesz zaprzeczyć..

MB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

jedyne co trzeba zrobic to mała przeróbka tak aby ostatni przejście for'a kończyło się bez wstawianiem przecinka na końcu

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

pasuje jeszcze przerobka zeby w ogole ten przecinek sie wstawial

btw: "modyfikowanie skryptu w pythonie nie jest mozliwe" - to jednak można?

MB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

Troszkę się z tym meczyłem, ale mi sie udało. Tak teraz wyglądają dane.

Kopiuj
{ "name":"Serwer AoS TCB", "online":"3", "slots":"10", "players": [ { "nick":"MaxyBlack" , "ping":"40","team":"POZ","points":"0" } ,{ "nick":"Kaspii" , "ping":"54","team":"POZ","points":"0" } ,{ "nick":"FireDast" , "ping":"300","team":"FOL","points":"31" } ] }

To teraz wracam do głównego pytania, jak wyswietlić ta tablice :/

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

Twój przykład działa z tym jsonem przecież

MB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

No właśnie teraz coś mi nie chce działać. Sprawdziłem co otrzymuje w Firebugu

Kopiuj
<?xml version="1.0" encoding="ISO-8859-1"?>


{
    "name":"Serwer AoS TCB",
    "online":"1",
    "slots":"10",
	"players": [
	
	
		
		{ "nick":"MaxyBlack" , "ping":"37","team":"FOL","points":"0" }
		
		
		
				]
}


edit

Ok, juz działa. Dzieki za pomoc.

edit 2

Efekt mojej pracy

http://biura-adaptacyjne.pl/test.html

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.