kedy vyuzivat JSON na prenos dat

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Matej123
Člen | 150
+
0
-

Chcel by som sa opytat, pripadne poradit, kedy je vhodne vyuzivat JSON v projektoch. Nedavno som pracoval na jednom projekte, kde som ho vobec nepouzival a vsetko sliapalo ako malo. Je ho vhodne pouzivat pri „prenosoch“ dat alebo premennych z presenterov do latte, alebo klasicky prenasat data
napr. : $this->template->data = „x“ ? teda chcel by som vediet v akych suvislostiach a ako ho vyuzit (pardon ze otazka sa mozno netyka prilis Nette). Dakujem.

Azathoth
Člen | 495
+
0
-

obecně se json hodí pro nějaké složitější věci než je jen string. např. pokud si uživatel naklikává nějaká data a není vhodný běžný formulář. js uloží do hidden inputu naklikaná data v jsonu a v php z toho mám snadno pole. prostě kdykoli, když potřebujeme přesypat něco z js do php.

artemevsin
Člen | 61
+
0
-

jen malé doplnění, že se také hodí i na přesypání opačným směrem – z php do js. Tento způsob se často používá u datagridu, kdy se v php vytvoří JSON a na straně klienta se javascriptem z toho udělá tabulka

newPOPE
Člen | 648
+
+1
-

V podstate mate obaja pravdu len riesi smer tam a druhy spat.

@Matej123 dolezite je si uvedomit, ze JSON mozes pouzit ako obalku. Ci uz cesta do JS alebo spat. Keby si potreboval napr. posielat configuraciu tak takymto zapisom?

$this->template->pages = ...;
$this->template->page = ...;
$this->template->jsBasePath = ...;
$this->template->somethingElse = ...;

tak za prve by si tam za chvilu mal dost bordel a za druhe by ta to asi rychlo preslo. Cize vyhodnejsie je to proste napisat inak. Priklad z hlavy (sposobov je vela):

// presenter, control, ...
$this->template->tableConfig = new TableConfig($page, $pages, $someVariable, ...);

// view, template (script)
var tableConfig = {$tableConfig->toArray()} // toto je len priklad
Pavel Kravčík
Člen | 1196
+
+2
-

Jak už zmínili A-boys, můžeš to použít mezi jazyky (nejen PHP). Taky se to relativně dobře čte, pokud to máš uložené v cookies, db. {"key":"value"} Je to hodně podobné funkci serialize() – liší se to v drobnostech. V podstatě se to hodí, když chceš uložit něco složitějšího.

My to třeba využíváme na API s jinou aplikací. Tj. odpověď na dotaz obsahuje více informací než ok-error. Takže např. {"code": 200, "message": "Success"}.

Matej123
Člen | 150
+
0
-

dakujem Vam za odpovede. Este jedna vec: pri prenose premennych z presenterov do latte sablon sa casto stretavam s pripadom ked do latte sablony predavam velmi vela premennych, nedali by sa tie premenne hodit do JSONu a tak ich potom v latte vypisovat? (len z hladiska lepsieho sposobu programovania :) )

Unlink
Člen | 298
+
0
-

Pokiaľ ich chceš spracovávať javascriptom tak áno, v opačnom prípade to nemá zmysel.

A ak sa môžem spýtať, čo je podľa teba veľmi veľa premennych? Možno by sa zišiel nejaký príklad. Ono ak to dáva zmysel tak ich môžeš nejako logicky pospájať, veď nemusíš tam posielať len sklárne hodnoty ale môžeš tam poslať aj objekt a podobne.

Matej123
Člen | 150
+
0
-

10–15 ? ale asi to budem riesit tak ako vravis , dakujem.

Unlink napsal(a):

Pokiaľ ich chceš spracovávať javascriptom tak áno, v opačnom prípade to nemá zmysel.

A ak sa môžem spýtať, čo je podľa teba veľmi veľa premennych? Možno by sa zišiel nejaký príklad. Ono ak to dáva zmysel tak ich môžeš nejako logicky pospájať, veď nemusíš tam posielať len sklárne hodnoty ale môžeš tam poslať aj objekt a podobne.