Autor | Zpráva | ||
---|---|---|---|
Vanama Profil |
#1 · Zasláno: 29. 6. 2011, 15:37:36
Zdravím potřebuju poradit. Mám ajaxový request a z request PHP souboru posílám data jako text a potřebuju to v javascriptu zpracovat jako pole.
Z PHP mám výstup: ['Datum','Odběratelé'],['2011-06-25',5330],['2011-06-24',5322],['2011-06-23',5316],['2011-06-22',5313],['2011-06-21',5308],['2011-06-20',5306],['2011-06-19',5292],['2011-06-18',5290],['2011-06-17',5284],['2011-06-16',5276],['2011-06-15',5269],['2011-06-14',5257] ale javascript mi to nezpracuje jako pole. Zkoušel jsem to i přetypovat, ale asi to neumím. Každopádně když tohle vložím na pevno do js souboru, tak mi to funguje. Díky za rady. |
||
Chamurappi Profil |
#2 · Zasláno: 29. 6. 2011, 15:50:02
Reaguji na Vanamu:
„ale javascript mi to nezpracuje jako pole“ To také není pole, ale několik polí oddělených čárkou (což je v JS operátor zapomenutí). |
||
Audio Profil |
#3 · Zasláno: 29. 6. 2011, 15:50:56
Dej to celé do hranatých závorek (aby se to tvářilo jako prvky jednoho pole) a použij funkci eval.
eval("pole = [['Datum','Odběratelé'],['2011-06-25',5330],['2011-06-24',5322],['2011-06-23',5316],['2011-06-22',5313],['2011-06-21',5308],['2011-06-20',5306],['2011-06-19',5292],['2011-06-18',5290],['2011-06-17',5284],['2011-06-16',5276],['2011-06-15',5269],['2011-06-14',5257]]"); Nyní můžeš pracovat s proměnnou pole, což bude dvourozměrné... pole. :) |
||
Medvídek Profil |
#4 · Zasláno: 29. 6. 2011, 15:51:28
Vanama:
Není lepší to posílat třeba jako JSON? |
||
Vanama Profil |
#5 · Zasláno: 30. 6. 2011, 08:15:24
Děkuju všem za odpovědi.
Audio: Tvé řešení funguje, díky moc Medvídek: S JSONem nemám ještě moc velké zkušenosti a v javascriptu vůbec ne. |
||
peta Profil |
#6 · Zasláno: 30. 6. 2011, 13:56:35
Prosim, jen ne eval.
var pole = [<?php echo "['Datum','Odběratelé'],['2011-06-25',5330],['2011-06-24',5322],['2011-06-23',5316],['2011-06-22',5313],['2011-06-21',5308],['2011-06-20',5306],['2011-06-19',5292],['2011-06-18',5290],['2011-06-17',5284],['2011-06-16',5276],['2011-06-15',5269],['2011-06-14',5257]"; ?>]; |
||
Audio Profil |
#7 · Zasláno: 30. 6. 2011, 14:05:58
peta:
Obávam se, že to takle nepůjde, protože on to pole získává jako plain text přes ajaxový požadavek. Čili lepším řešením než eval bych spíš viděl ten JSON / XML formát. |
||
Vanama Profil |
#8 · Zasláno: 30. 6. 2011, 14:37:31
Co je na tom evalu tak špatného? Nikdo ho nedoporučuje.
Já ho používám téměř vždy, když dělám ajax request. Dá se tím poslat i více hodnot najednou. Každopádně asi by nebylo od věci naučit se pracovat s JSONem. Já to klidně předělám. Pokud to není nijak složité, tak mi poraďte jak bych to měl udělat přes JSON? Vím, že existuje v PHP json_encode a json_decode, ale jak to funguje v JS nevím. |
||
peta Profil |
#9 · Zasláno: 30. 6. 2011, 14:48:39
Audio: Pravda, beru zpet, pak asi eval.
Vanama: To zalezi na pouziti. Vetsina veci se da udelat bez eval(). Problem evalu je, ze vytvari JS kod. Kdyz to, co posilas do evalu muze uzivatel ovlivnit, muze tam pridat parazitni funkci. Vetsina lidi nezna nebo nedba na bezpecnost toho, co uzivatel posila. Pak hackerovi staci pouzit zname finty, kterych je plny inet a ukrast ti osobni udaje. |
||
Vanama Profil |
#10 · Zasláno: 30. 6. 2011, 15:20:11
Aha. Díky za vysvětlení.
Zkusím si teda najít informace jak to dělat přes JSON a předělám to. Nechci přece, aby se mi do toho někdo naboural. |
||
Medvídek Profil |
#11 · Zasláno: 30. 6. 2011, 15:58:38
Vanama:
Tady máš názornou ukázku: HTML - http://filez.party-akce.cz/djpw/json.html PHP - http://filez.party-akce.cz/djpw/json.php Zdroják: PHP <?php header("Content-Type: application/json; charset=UTF-8"); $set["portal"]="Diskuse jak psát web"; $set["nadpis"]="Text to Array"; $set["topic"]=127246; echo json_encode($set); ?> HTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>JSON</title> <script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script> </head> <body> <p></p> <script> $(document).ready(function() { $.getJSON('json.php', function(data) { $.each(data, function(key, val) { $("body").append($("<p>"+key+" - "+val+"</p>")); }); }); }); </script> </body> </html> |
||
Chamurappi Profil |
#12 · Zasláno: 30. 6. 2011, 16:32:23
Reaguji na Medvídka:
„Není lepší to posílat třeba jako JSON?“ Pole je také JSON. Kvůli takovéhle prkotině tahat framework… Reaguji na peta: „Prosim, jen ne eval.“ Tohle je příklad oprávněného použití. V prohlížečích, které nedisponují nativním objektem JSON , to je prakticky jediná možnost.
„Kdyz to, co posilas do evalu muze uzivatel ovlivnit, muze tam pridat parazitni funkci.“ Chyba je, pokud dostane možnost ta data ovlivnit víc, než je zdrávo (třeba nabourat uvozovky), nehledě na to, jestli se používá eval .
|
||
Medvídek Profil |
#13 · Zasláno: 30. 6. 2011, 18:47:17
Chamurappi:
„Pole je také JSON.“ Je, ale přijde mi lepší použít JSON, když je právě na tyto věci vhodný a má přímou podporu v PHP. „Kvůli takovéhle prkotině tahat framework“ Tak v dnešní době u větších projketů počítám, že se tam většinou objeví. Ale samozřejmě pokud by se jednalo pouze o toto, tak IMHO zbytečný. |
||
__construct Profil |
#14 · Zasláno: 30. 6. 2011, 20:39:54 · Upravil/a: __construct
Medvídek:
> „Pole je také JSON.“ > Je, ale přijde mi lepší použít JSON, Nejak nechápem – neprotirečíš si? Je jedno či máš JS objekt alebo JS pole – použitím PHP funkcie json_decode z toho získaš PHP objekt, alebo PHP pole. Oboje je JSON, takže je jedno čo použije.
|
||
Časová prodleva: 13 let
|
0