Autor | Zpráva | ||
---|---|---|---|
radvis Profil |
#1 · Zasláno: 20. 7. 2010, 01:45:51
ahoj, sanžím se vypsat z php data jsonem, ale jsem z toho úplně zmatený. Zkouším to podle tutoriálu na programujte.com, ale vůbec nevím "co se děje". Vypast to v php je jednoduchý, ale když to chci vypsat do alertu tak bohužel nic.
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>jSon</title> <script src="http://code.jquery.com/jquery-latest.min.js"></script> </head> <body> <?php $ret = array(); $ret['stav'] = 0; $ret['text'] = 'Musíš se přihlásit'; $ret['citat'] = '"Lépe pozdě, než nikdy."'; //echo json_encode($ret); //$json_string = json_encode($ret); //$json = json_decode($json_string, true); // array ( // 'stav' => 0, // 'text' => 'Musíš se přihlásit', // 'citat' => '"Lépe pozdě, než nikdy."', // ) //var_export($json); //echo $json['citat']; // "Lépe pozdě, než nikdy." //echo $json['text']; //echo $json['stav']; ?> <script> // v xhr.responseText máme JSON data var ret = $.parseJSON(xhr.responseText); $.each(ret, function(key, value) { alert(key + ': ' + value); }); </script> </body> </html> Díky za rady. |
||
Aichi Profil |
#2 · Zasláno: 20. 7. 2010, 18:44:12
soubor s PHP by měl být jiného názvu než soubor s HTML a JS. V JS mi chybí ta část kdy se dotážes serveru (url s PHP) na data a získáš objekt xhr.
V PHP naopak chybí převedení pole na json string a jeho vypsání, takže to fakt nemůže fungovat. |
||
radvis Profil |
#3 · Zasláno: 20. 7. 2010, 20:20:24
Prosím o nějaký tutoriál, hledal jsem po netu, ale nic, co by to popsalo dobře popsané. Zkoušel jsem to dodělat jak jsi napsal, ale bohužel nic.
|
||
Kcko Profil |
#4 · Zasláno: 20. 7. 2010, 20:26:06
|
||
radvis Profil |
#5 · Zasláno: 20. 7. 2010, 21:10:28
Prosim i s php by to nebylo? Nebo kdyby se našel někdo hodny, kdo by mi ukazal na přikladu jak mit třeba 2 soubory třeba: index.php, data.php.
Php by bylo třeba: //data.php $ret = array(); $ret['stav'] = 0; $ret['text'] = 'Musíš se přihlásit'; $ret['citat'] = '"Lépe pozdě, než nikdy."'; $return = json_encode($ret); a v index.php by mi stačil scrit (nejlepe jQuery), co by vzal data z php. Byl bych vám hodně vděčný, díky. |
||
Kcko Profil |
#6 · Zasláno: 21. 7. 2010, 00:56:20
v data.php by bylo
===================== <?php $ret = array(); $ret['stav'] = 0; $ret['text'] = 'Musíš se přihlásit'; $ret['citat'] = '"Lépe pozdě, než nikdy."'; $return = json_encode($ret); echo $return; exit; ?> a v v index.php by byl tento jQuery kod <div id="result"></div> <script type="text/javascript"> $(function(){ $.getJSON('data.php', function(data) { $('#result').text("Citát bude " + data.citat); }); }); </script> |
||
radvis Profil |
#7 · Zasláno: 21. 7. 2010, 01:02:25
Funguje, díky moc jen bych se ještě chtěl zeptat, kdybych to dal v tom php do funkce jak by vypadal js kod? Díky.
<?php public function test(){ $ret = array(); $ret['stav'] = 0; $ret['text'] = 'Musíš se přihlásit'; $ret['citat'] = '"Lépe pozdě, než nikdy."'; $return = json_encode($ret); echo $return; } ?> |
||
Kcko Profil |
#8 · Zasláno: 21. 7. 2010, 01:05:56
1/ Funkce by měla neco vracet, takže return $return;
2/ Kód bude vypadat pořád stejně. Ty si prostě jen zavoláš adresu na nějaký soubor, který Ti vráti požadovaná data a ty vypíšeš. Nehledej v tom žádnou vědu :-) |
||
radvis Profil |
#9 · Zasláno: 21. 7. 2010, 13:17:00
Zkoušel jsem to dat i do funkce i do cyklu, ale pořád nic.
while($show = mysql_fetch_array($vysledek)){ $ret = array(); $ret['stav'] = 0; $ret['nick'] = $show['user_name']; $ret['citat'] = '"Lépe pozdě, než nikdy."'; $return = json_encode($ret); echo $return; } //kdyz dam to echo s return pro } tak to vypíše jen poslední záznam Stejný to je i s funkcí. |
||
Aichi Profil |
#10 · Zasláno: 21. 7. 2010, 13:18:09
nicméně těžko z JS zavoláš funkci v PHP, takže opět tam v tom PHP souboru budeš mít
echo test(); |
||
radvis Profil |
#11 · Zasláno: 21. 7. 2010, 13:28:49
Ou, na to jsem měl přijít, díky .... ale bohužel pořád "nefunguje" cyklus. Vypíše to pouze poslední záznam z DB.
|
||
DJ Miky Profil |
#12 · Zasláno: 21. 7. 2010, 14:27:09
Měl bys to ukládat do pole a přes json_encode() prohnat až všechny záznamy najednou:
$ret=array(); while($show = mysql_fetch_array($vysledek)){ $ret[] = array(); $ret[]['stav'] = 0; $ret[]['nick'] = $show['user_name']; $ret[]['citat'] = '"Lépe pozdě, než nikdy."'; } $return = json_encode($ret); echo $return; |
||
radvis Profil |
#13 · Zasláno: 21. 7. 2010, 16:29:34
Upravil jsem si to takhle(citat byl v cyklu a byl tam tolikra, kolikrat byl zaznam v db):
$ret=array(); while($show = mysql_fetch_array($vysledek)){ $ret[] = array(); $ret[]['nick'] = $show['user_name']; } $ret['citat'] = '"Lépe pozdě, než nikdy."'; $return = json_encode($ret); echo $return; Teď mi to přečte citát, ale jak tam je to další pole tak to nevypíše ani jednoho uživatele. |
||
radvis Profil |
#14 · Zasláno: 21. 7. 2010, 16:30:16
js:
$.getJSON('kod.php', function(data) { $('#result').text("Citát bude " + data.citat + data.nick); }); |
||
Kcko Profil |
#15 · Zasláno: 21. 7. 2010, 17:16:26
data[index].nick; $ret=array(); while($show = mysql_fetch_array($vysledek)){ $ret[] = array(); $ret[]['nick'] = $show['user_name']; } $ret['citat'] = '"Lépe pozdě, než nikdy."'; $return = json_encode($ret); echo $return; A tučně zvýrazněný řádek si odmaž, nemá tam žádný smysl, akorat se ti zaplňuje pole prázdnou hodnotou po každé iteraci. |
||
radvis Profil |
#16 · Zasláno: 21. 7. 2010, 17:57:12
Kcko: To číslo tam není dobré, ja bych chtěl vybrat všechny uživatele (proto to mám v cyklu)
|
||
Kcko Profil |
#17 · Zasláno: 21. 7. 2010, 20:39:15
|
||
radvis Profil |
#18 · Zasláno: 21. 7. 2010, 22:05:33
Moc mi to nepomohlo, nejde mi to jak chci:(. Chtěl bych aby se mi vypsali prostě nějak přezdívky podsebou a když přidám do db další zase se zařadí pod předchozí nick, ale ať dělám co dělám tak se mi to nedaří.
|
||
Kcko Profil |
#19 · Zasláno: 21. 7. 2010, 23:05:13 · Upravil/a: Kcko
Vlastní příklad:
data.php ------------------------------ <?php $ret=array(); foreach (array('Roman', 'Fanda', 'Jirka') as $name) { $ret[]['nick'] = $name; } $ret['citat'] = '"Lépe pozdě, než nikdy."'; $return = json_encode($ret); echo $return; exit; ?> index.php ------------------------------ <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.js"></script> <div></div> <script> var textToDiv = ''; $.getJSON('data.php', function(data) { $.each(data, function(key, value) { if (key != 'citat') textToDiv += value.nick + "<br />"; }); textToDiv += "a jeste citat " + data.citat; $("div").html(textToDiv); }); </script> |
||
radvis Profil |
#20 · Zasláno: 22. 7. 2010, 23:00:47
Super, díky už jen se poprat s nette a nacpat to dotoho a pak to upravit tak aby když dám ten výpis do cyklu aby se automaticky tahali data vypsali jen ti novi uživatelé. JInak jsi hodný, že jsi mi to napsal.
|
||
Časová prodleva: 14 let
|
0