[AJAX][JavaScript]JSON odczyt danych |
[AJAX][JavaScript]JSON odczyt danych |
8.11.2018, 09:33:03
Post
#1
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 10.07.2013 Ostrzeżenie: (0%) |
Witam,
Posiadam taki oto obiekt JSON Kod { "2018-10-18":{ "id":["1","2"], "id_sensor":["1","1"], "lat":["17.8267013", "17.8267013"], "lng":["51.700327", "51.700327"], "PM1":["11","11"], "PM2_5":["10","10"], "PM10":["1","1"], "temperature":["45","45"], "pressure":["1188","1188"], "date":["2018-10-18","2018-10-18"], "time":["11:00:00","11:00:00"] }, "2018-11-04":{ "id":["3","4"], "id_sensor":["1","1"], "lat":["17.8267013", "17.8267013"], "lng":["51.700327","51.700327"], "PM1":["11","11"], "PM2_5":["10","10"], "PM10":["1","1"], "temperature":["45","45"], "pressure":["1188","1188"], "date":["2018-11-04","2018-11-04"], "time":["11:00:00","11:00:00"] }} Problem polega na tym że chciałbym odczytywać dane tak jak z tablicy (po indeksach) ponieważ nie znam zwracanych dat. Wszystko działa w następujący sposób. Poprzez JS wysyłam zapytanie do pliku PHP który odczytuje dane z bazy i sortuje je tak jak widać powyżej, następnie odebrane dane chce wyświetlać krok po kroku według daty w pętli za pomocą JS. Odczyt w standardowy sposób np."Data[2018-11-04].lng[i]" nie jestem wstanie zrobić ponieważ nie znam dat jakie zwrócił serwer. W jaki sposób mogę ten obiekt zamienić na tablice ? |
|
|
8.11.2018, 10:00:11
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 446 Pomógł: 6292 Dołączył: 27.12.2004 |
W js po obiektach iteruje sie np. przy pomocy FOR - patrz dokumentacja js
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
8.11.2018, 13:00:04
Post
#3
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 10.07.2013 Ostrzeżenie: (0%) |
Wykombinowałem sobie kod który przepisuje mi dane do tablicy
Kod function get_story_data(){ var day = [2]; var data_table = [3]; var begin_day = document.getElementById("date-begin-input").value; var end_day = document.getElementById("date-end-input").value; var url_data = "../api/get_story_data.php?begin_day=" + begin_day + "&end_day=" + end_day; $.ajax({ url: url_data, complete: function (response) { var Data = []; var DataString = response.responseText; Data = JSON.parse(DataString); var name_day = Object.keys(Data); for (var i = 0; i < name_day.length; i++) { for (let x=0; x<Data[name_day[i]].id.length; x++) { var lng = Data[name_day[i]].lng[x]; var lat = Data[name_day[i]].lat[x]; var pm10 = Data[name_day[i]].PM10[x]; data_table[x] = [lng, lat, pm10]; } day[i] = [name_day[i], data_table]; } }, error: function () { alert("blad"); }, timeout: 4000 }); return day; } day = get_story_data(); i teraz gdy odwołuje się do danego miejsca w tablicy żeby odczytać np date "day[0][0]" otrzymuje Undefined gdzie powinna być data, co robię źle ? |
|
|
8.11.2018, 14:28:50
Post
#4
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
console.table(day)
i zobacz co wypluje |
|
|
8.11.2018, 14:57:23
Post
#5
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 10.07.2013 Ostrzeżenie: (0%) |
Wyskakuje coś takiego
Ten post edytował matti9410 8.11.2018, 15:14:44 |
|
|
8.11.2018, 15:26:21
Post
#6
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Czyli masz. Ale weź pod uwagę ajax wykonuje się asynchronicznie więc wykonanie funkcji `get_story_data()` zwróci Ci pustą tablicę (czy co tam masz na początku).
żeby dobrać się do danych z Ajax musisz to zrobić w complete tam gdzie mielisz te dane. |
|
|
9.11.2018, 09:27:01
Post
#7
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 10.07.2013 Ostrzeżenie: (0%) |
W jaki sposób mogę zrobić opóźnienie reszty kodu dopóki nie dostane danych ? Nie wiem jak się za to zabrać.
|
|
|
9.11.2018, 09:39:21
Post
#8
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Nie opóźniaj bo zamrażasz interfejs tym.
Napisz sobie po prostu funkcję którą odpalisz po udanym requeście w metodzie complete i tam ją odpal. |
|
|
9.11.2018, 10:12:09
Post
#9
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 10.07.2013 Ostrzeżenie: (0%) |
Wielkie dzięki za pomoc . Wszystko śmiga.
|
|
|
Wersja Lo-Fi | Aktualny czas: 18.04.2024 - 11:29 |