Da Query (MySQL) para JSon

Outubro 7, 2008 on 6:32 pm | In JavaScript, AJAX, Tutorial |

Bom, como já é comum as pessoas trabalharem com AJAX onde o envio se da para um arquivo que se conecta em um banco de dados e retorna o resultado de um Query, vou ensinar como tratar esse(s) dado(s) para retornar um Json e processar os dados sem o uso de eval(), pois como foi comentado no outro post sobre, o eval é uma função perigosa que pode executar códigos javascript maliciosos, para isso iremos usar um parser (retirado do Json.org).

Vamos ao que interessa, primeiramente vamos ver como tratar os dados de retorno de uma query, no qual precisamos criar uma array que para cada posição teremos uma array com os valores:

PHP:
  1. $query="SELECT * FROM clientes";
  2. $resp=mysql_query($query);
  3. $obj=array();
  4. while($ret=mysql_fetch_assoc($resp)){
  5. $obj[] = $ret;
  6. }
  7. echo json_encode($obj);
  8. /*Imaginemos que o Obj tenha o seguinte conteudo:
  9. Array
  10. (
  11. [0] => Array
  12. (
  13. [id] => 7
  14. [usuario] => usuario
  15. [nome] => Rafael
  16. )
  17. [1] => Array
  18. (
  19. [id] => 8
  20. [usuario] => user
  21. [nome] => Cunha
  22. )
  23. )
  24. */
  25.  
  26. /*O conteúdo do echo será
  27. [{"id":"7", "usuario":"usuario","nome":"Rafael" },
  28. {"id":"8", "usuario":"user","nome":"Cunha"}]
  29. */

Acima então no final usamos a função json_encode do PHP para passarmos nossa array para um valor representante em Json.
Agora nossa função ajax (javascript) ja recebeu os dados e o que precisamos é dar um parse para passarmos para um Obj com notação Json para podermos manipular os dados livremente, para isso precisaremos do parser que está escrito em JavaScript e pode ser feito o download na página do Json.org:

JAVASCRIPT:
  1. // Imaginando que seu Ajax (função) retorne o resultado com o nome de var data
  2. var myObject = JSON.parse(data);
  3. // Pronto: para acessarmos os dados podemos utilizar o
  4. // myObject.id
  5. // myObject.usuario
  6. // myObject.nome
  7.  
  8. // For roda o Objeto JSon e retorna valor
  9. for (var x in myObject){
  10. alert("Meu id:  "+myObject[x].id+" usuario : "+myObject[x].usuario+" nome : "+myObject[x].nome);
  11. }

Poque usar o JSON.parse() ? Na verdade como dito anteriormente é uma questão de segurança, pois este parse não executa códigos, nos livrando de problemas com scripts maliciosos, além de ser mais rápido do que simplesmente executar um eval(), este parse pode ser usado para executar funções em conjunto com a criação do Obj, basta dar uma olhada na documentação.


2 Comments »

RSS feed for comments on this post. TrackBack URI

  1. Amigo qual parser você usou do site Json.org?
    Muito bom o POST.
    Obrigado.

    Comment by Rafael — Novembro 24, 2008 #

  2. Opa chara...

    Seguinte, você pode encontrar mais informações no http://www.json.org/js.html, la tem sobre funcionamento e o arquivo no final... qualquer dúvida so avisar.

    Abraços

    Comment by silici0 — Novembro 24, 2008 #

Leave a comment

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>


 

 Assine o feed