Treba mi pomoć za javascript jquery

S

system

Guest
Code:
<script>
        $(document).ready(function() {
            setInterval('USDBTC()',3000);
            setInterval('RSDEUR()',3000);
            setInterval('USDEUR()',3000);
            setInterval('USDXAU()',3000);
        });

        function USDBTC() {
            var xhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    document.getElementById('usdbtc').innerHTML = this.responseText;
                }
            };
            xhttp.open('GET', '<?php echo ROOT; ?>scripts/usdbtc.php', true);
            xhttp.send();
        }

        function RSDEUR() {
            var xhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    document.getElementById('rsdeur').innerHTML = this.responseText;
                }
            };
            xhttp.open('GET', '<?php echo ROOT; ?>scripts/rsdeur.php', true);
            xhttp.send();
        }

        function USDEUR() {
            var xhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    document.getElementById('usdeur').innerHTML = this.responseText;
                }
            };
            xhttp.open('GET', '<?php echo ROOT; ?>scripts/usdeur.php', true);
            xhttp.send();
        }

        function USDXAU() {
            var xhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    document.getElementById('usdxau').innerHTML = this.responseText;
                }
            };
            xhttp.open('GET', '<?php echo ROOT; ?>scripts/usdxau.php', true);
            xhttp.send();
        }
</script>
I imam 4 php fajla. Sve oni što rade, je mahom isti posao. Sa jednog sajta grabe berzansku vrednost za taj i taj valutni par.

E sad, kao što vidite javascript poziva 4 puta svake 3 sekunde php, a php onda 4 puta kontaktira taj berzanski sajt. Jel mogu nekako da složim javascript da se samo jednom obraća serveru i pokupi 4 vrednosti, a ne 4 puta da mu se obraca za svaku vrednost po jednom. Da malo rasteretim server.

PHP znam kako da sredim da to bude jedan fajl. Moze da daje kao izlaz niz $value[‘name’] i onda da to javascript iskoristi. Nadam se da sam objasnio.
 

Cvetan

Member
Joined
Aug 27, 2014
Messages
326
Reaction score
6
Koristiš jQuery a pešaka pišeš AJAX zahtev?! OK, sad sam sve video. 🙂
Šta će ti onda uopšte jQuery overhead ako nećeš da koristiš sve šta ti pruža?

Ako u istom trenutku možeš da dobiješ sve 4 vrednosti, i da nisu međusobno zavisne, ne vidim razlog zašto ti server ne bi poslao sve u jednom zahtevu, eventualno u nekom JSON-u ili nešto slično.
 
Last edited:
S

system

Guest
Tom serveru mi se obraca php a taj php kao što se vidi poziva jquery 4 puta. Ne znam kako da to svedem na 1 put. Sa jquery bih mogao sve da završim ali slabo stojim sa javascriptom.
 

Cvetan

Member
Joined
Aug 27, 2014
Messages
326
Reaction score
6
Ne obraća se PHP serveru, PHP je server.

Ovde imaš klijenta koji je javascript i tvoja HTML strana. PHP je serverska strana i servira sadržaj.

Nisi odgovorio na ova pitanja odozgo. I nije ti ovde glavni javascript već serverska strana, lako ćeš da opališ jedan AJAX zahtev ako ti serverska logika sve vraća kako treba.
 
Last edited:
S

system

Guest
@Cvetan nismo se razumeli. Evo ga php kod:
Code:
$url = 'https://bitpay.com/api/rates';

$json = json_decode(file_get_contents($url));

foreach ($json as $obj) {
   
    if ($obj->code == 'EUR') {

        $eur1 = $obj->rate;
    }

    if ($obj->code == 'RSD') {

        $rsd1 = $obj->rate;
    }
}
taj serverski kod 🙂 komunicira sa drugim sajtom. A ja preko ajaxa samo pozivam taj php kod svake tri sekunde. Razumes. E sad, pametno bi bilo da sve odradim preko ajaxa, ali malo mi je komplikovano.
 

Cvetan

Member
Joined
Aug 27, 2014
Messages
326
Reaction score
6
Nije problem u javascriptu ne znam zašto si toliko zapeo za isti. 🙂

Ako hoćeš da smanjiš broj zahteva, što je bila polazna osnova tvoje teme, treba da središ kod na serveru, dakle u PHP-u.

Imaš jedan endpoint na primer, getrates.php

Pseudo kod:
1.Povuci kurseve sa API-ja, eventualno ta 4 zahteva ako ne možeš iz cuga da ih dobiješ
2.Posložiš kurseve u 4 promenljive
3.Staviš ih u asocijativni niz eventualno da bi mogao da gađaš kao objekat iz javascripta
4.JSON encode niza i output u json
5.Na klijentskoj strani opališ jedan AJAX ka getrates.php i dobiješ sve šta ti treba iz jednog zahteva.
 
Last edited:
S

system

Guest
E tačka 5 me buni, ali sutra, ovih dana. 🙂 Hvala na trudu ali sam prsNuo, dosta je više.
 
S

system

Guest
Ebiga, js mi je slabija strana, ali resicu. Ti cvetko nemoj da se trudis 😛
 

webad

Member
Joined
Jan 5, 2016
Messages
126
Reaction score
8
ako ti php na kraju odradi
echo json_encode(['val1' => $val1, 'val2' => 'val2', ...]);
u js ti onda ostaje

var json_response = JSON.parse(this.responseText); var val1 = json_response.val1; var val2 = json_response.val2; ...
 
Last edited:

Cvetan

Member
Joined
Aug 27, 2014
Messages
326
Reaction score
6
Nema šta da parsira ako content type odgovora bude JSON.

To se direktno gađa kao objekat iz javascripta.
 
Last edited:
S

system

Guest
Aha, e to mi je trebalo. Nadam se da ću se snaći. Eto cvetko, to je pomoć 😃

dopuna:

php mi radi svašta nešto sa json, prvo pokupi, pa upisuje zadnju vrednost u bazi i na kraju echo $value;

E sad umesto echo $value, da stavim samo echo $value[‘rsd’] itd… I to posle kako je webad rekao uzmem u js.
 

Cvetan

Member
Joined
Aug 27, 2014
Messages
326
Reaction score
6
Moraš da staviš header content type da bi dobio JSON output. Nema potrebe ljudi u javascriptu da parsirate JSON.

JSON = Javascript Object Notation

Zašto bi parsirao i pravio dodatni posao, pošalješ direktno JSON.
 
Last edited:

Cvetan

Member
Joined
Aug 27, 2014
Messages
326
Reaction score
6
Ne znam šta si odradio, ja koliko vidim ništa - opet 4 zahteva. Ali dobro ti znaš. 😃

4 ajaxa ti se opaljuju stalno.
 
Last edited:
S

system

Guest
Neka su za sad, počeo sam na live sajtu da radim, pa sam nešto shebo, a još nisam prebacio na lokal, za sad je dobro, to su par kb transfera 🙂
 
S

system

Guest
Evo jednog rešenja na lokalu:

php:

Code:
$data = array(
[CODE]'rsdeur'    => $rsdeur,
'usdbtc'    => $usdbtc,
'usdeur'    => $usdeur,
'usdxau'    => $usdxau
);

header(‘Content-Type: application/json’);

echo json_encode($data); [/CODE]

js:

Code:
I… radi, možda nije baš lepo, ali eto jel ima neka sugestija?

dodatak: ipak nekako mi je spor odziv, gledam na sajtu i lokalu, uporedjujem vrednosti, na sajtu mi se brze menjaju vrednosti, dok na lokalu, zakuca jednu vrednost pa je dugo drzi.
 

Cvetan

Member
Joined
Aug 27, 2014
Messages
326
Reaction score
6
Zašto pešaka ajax zahtev majko mila? 🙂

Šta će ti jQuery uopšte? Ništa od jQuery-ja ne koristiš.

jQuery.ajax() | jQuery API Documentation

$.ajax({ url: "skripta.php", method: "get", dataType: "json", succes: function(response) { // i ovaj objekat response ti je sada JSON pa ne moras da parsiras // Do your magic here }, error: function() { console.error("Greska!") } });
 
Last edited:

Cvetan

Member
Joined
Aug 27, 2014
Messages
326
Reaction score
6
Kako to spajaš stringove u javascriptu 'leba ti?

Sve i da si uspeo da uradiš concat, to bi izgledalo ovako otprilike, dakle ovo bi ti bio url:
"example.com"engine/scripts/rates.php.

Ovo nije validan url.
 
Last edited:
Top