• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przesyłanie danych za pomocą json

Object Storage Arubacloud
0 głosów
1,665 wizyt
pytanie zadane 26 sierpnia 2018 w JavaScript przez Bartłomiej Bolesta Obywatel (1,630 p.)

Niby sporo jest tematów o tym, ale kompletnie nie mogę się przebić.

Pobieram dane z bazy, które przerabiam w php i tworzę tablicę:

$timeindatabase = array($actualtime, $firsttime, $secondtime, $thirdtime, $fourthtime, $fifthtime, $sixthtime, $seventhtime, $eighthtime, $ninthtime);
echo json_encode($timeindatabase);

Dla sprawdzenia dodałem echo i wyświetla prawidłowo:

[["2018-08-09 11:52:16","2018-08-09 09:20:46","2018-08-09 09:24:18"],["2018-08-09 09:40:17",null,null],["2018-08-09 12:09:38",null,null],["2018-08-09 12:09:40",null,null],["2018-08-09 10:22:22",null,null],["2018-08-09 11:45:50",null,null],[null,null,null],[null,null,null],[null,null,null],[null,null,null]]

Pod body podpinam funkcję onload:
 

<body onload='startTime();queueTime()'>

Potem w pliku js:

function queueTime(){
		
		var timeindatabase = JSON.parse( '<?php echo json_encode($timeindatabase) ?>' );
		//var x = 123456789;
		//console.log(x);
		
		console.log(timeindatabase);
};			

Dla testu dodałem zmienna x, która jest prawidłowo pokazywana, ale moja prawdziwa zmienna nie:

 

Uncaught SyntaxError: Unexpected token < in JSON at position 0
    at JSON.parse (<anonymous>)
    at queueTime (queue_scripts.js:3)
    at onload (home.php:22)

I za nic nie mogę się doszukać info co robię źle.

komentarz 26 sierpnia 2018 przez Bartłomiej Bolesta Obywatel (1,630 p.)
Dokładna konstrukcja:

plik php posiadający strukturę html -> plik php ze skryptem includowany i wywoływany w poprzednim pliku-> plik js z funkcją wywoływaną w pliku ze skryptem.
komentarz 26 sierpnia 2018 przez StOcK Mądrala (6,100 p.)
Czy nie lepiej byłoby zrobić plik PHP z akcjami do wykonania? Bez wyświetlania tych danych?

np plik ajax.php a w nim funkcja, która pobiera np $_POST['getTimesFromDB'] i zwracająca $timeindatabase.
komentarz 26 sierpnia 2018 przez Bartłomiej Bolesta Obywatel (1,630 p.)
Ale ja ich nie wyświetlam. Dałem echo tylko po to, aby było widać, że działa. Ten plik po prostu przetwarza dane pobrane z bazy i potem wysyła je do pliku js.
komentarz 26 sierpnia 2018 przez StOcK Mądrala (6,100 p.)
Dobra, już bliżej niż dalej, po co wysyłasz dane do JS? Co z nimi robisz?
komentarz 26 sierpnia 2018 przez Bartłomiej Bolesta Obywatel (1,630 p.)
A to było powiedzieć to bym opisał wszystko od początku do końca :D.

W JS chcę zrobić odliczanie.

Pobieram daty z bazy danych, ale są surowe, więc m.in. potrzebuję obliczyć różnicę - ile czasu pozostało do daty w bazie danych. Potem wysyłam do js za pomocą którego chcę wyświetlać odliczający się czas (jak zwykły zegarek). W znaczeniu "do wykonania zadania zostało 15h... 14:59:59... 14:59:58".

1 odpowiedź

0 głosów
odpowiedź 26 sierpnia 2018 przez StOcK Mądrala (6,100 p.)
w tym pliku wyświetlasz cały html
ładujesz swój plik *.js (aby mieć dostęp do swojej funkcji)
--------------------
html
  script src='plik.js'
body
  licznik
w tym pliku znajduje się twoja funkcja, która zarządza licznikiem
w tym pliku również musisz mieć dostęp do czasów z bazy danych (pobierz je za pomocą AJAXa)
-------------------
function queueTime(){
    var timeindatabase;
    $.ajax({
        url: "plik_php_ze_skryptem.php",        
        method: "POST",        
        data: { akcja : 'pobierz_czasy_z_bazy' },
        success: function(response){
            timeindatabase=JSON.parse(response);
        }
    });
    console.log(timeindatabase);
};
w tym pliku pobierzesz dane z bazy danych
UWAGA tego pliku nie includujesz w innym pliku
-------------------
if(isset($_POST['akcja']) && !empty($_POST['akcja'])){
    switch($_POST['akcja']){
         case 'pobierz_czasy_z_bazy':    // to samo co if($_POST['akcja']=='pobierz_czasy_z_bazy')
            $timeindatabase = array($actualtime, $firsttime, $secondtime, $thirdtime, $fourthtime, $fifthtime, $sixthtime, $seventhtime, $eighthtime, $ninthtime);
            echo json_encode($timeindatabase);
            break;
    }
}

 

 

komentarz 26 sierpnia 2018 przez Bartłomiej Bolesta Obywatel (1,630 p.)
Ale... tu jest wszystko (a nawet więcej) poza tym, czego nie mam, czego nie potrafię czyli to co zostawiłeś jedynie jako "(pobierz je za pomocą AJAXa)".

Tu znów jest wysyłanie w drugą stronę z JS do PHP, a tego nie potrzeba (później po prostu podmieniam zawartość określonych divów). Nie wiem jak zrobić z PHP do JS.
komentarz 26 sierpnia 2018 przez StOcK Mądrala (6,100 p.)

tutaj console.log(timeindatabase); masz już dane z PHP, to co potrzebujesz

Nie wiem jak zrobić z PHP do JS.

To się odbywa w tle.

komentarz 26 sierpnia 2018 przez StOcK Mądrala (6,100 p.)

 Potem w pliku js:

var timeindatabase = JSON.parse( '<?php echo json_encode($timeindatabase) ?>' );

Powiem tak. Nie ma możliwości wykonania kodu PHP w pliku JS. Więc zostaje tylko ajax ;)

komentarz 26 sierpnia 2018 przez Bartłomiej Bolesta Obywatel (1,630 p.)

@StOcK, Tzn. kiedy i jak się odbywa? Nie rozumiem tego za nic. Może mógłbym te kody skopiować i by zadziałało, ale bez zrozumienia to nie ma sensu.

Czy ajax to tylko pobieranie z bazy danych? Bo nie mogę tak zrobić. Muszę pobrać z bazy do php, przerobić te dane i dopiero posłać do js. Czy nie ma naprawdę prostego sposobu przeniesienia danych z stąd tam?

komentarz 26 sierpnia 2018 przez StOcK Mądrala (6,100 p.)

Czy ajax to tylko pobieranie z bazy danych?

Nie, ajax to metoda komunikacji między serwerem, a przeglądarką (php <-> javascript).

 ---------------

Muszę pobrać z bazy do php, przerobić te dane i dopiero posłać do js.

Powinno być tak,

"Muszę wysłać (z JS) zapytanie do PHP aby pobrał dane z bazy, przerobił te dane i odesłał mi je do JS. "

 

// EDIT

Domyślam się, że próbujesz zaincludować skrypt php i tam pobrać te dane. Nie rób tak. Zrób tak, żeby to z JS poszło zapytanie o te dane, bez include skryptu PHP.

komentarz 26 sierpnia 2018 przez StOcK Mądrala (6,100 p.)

@Bartłomiej Bolesta, zajrzyj tutaj DEMO  (3 pliki: index.php, plik_php_ze_skryptem.php oraz plik.js)

Zajrzyj do źródła strony, jak coś mogę podesłać kod PHP.

Podobne pytania

0 głosów
2 odpowiedzi 561 wizyt
pytanie zadane 7 września 2018 w C i C++ przez Piotrek32 Obywatel (1,610 p.)
0 głosów
1 odpowiedź 214 wizyt
pytanie zadane 23 września 2019 w Sieci komputerowe, internet przez r000 Nowicjusz (150 p.)
+1 głos
1 odpowiedź 102 wizyt
pytanie zadane 22 kwietnia 2017 w C# przez Deloryn Bywalec (2,060 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...