Autor Zpráva
Vanama
Profil
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
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
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
Vanama:
Není lepší to posílat třeba jako JSON?
Vanama
Profil
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
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
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
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
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
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
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
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
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
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.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0