Pegar retorno do JSON

6,773 views
Skip to first unread message

Nosferatu

unread,
Jul 5, 2010, 1:50:03 PM7/5/10
to jQuery (Brasil)
Boa tarde pessoal,

Seguinte, eu criei um formulário que é enviado por AJAX e me retorna
JSON, utilizei para isso o $.ajax() do jQuery. Gostaria de saber dos
amigos, como proceder para pegar os dados gerados em JSON, dados estes
que constam no meu arquivo, para que eu crie uma lista dos dados
retornados na mesma página a qual foi feita a requisição.

Segue o código JavaScript utilizado:

http://pastebin.com/drdiYDRb

Antes que me mandem procurar no google (rs), já procurei, inclusive
aqui na lista, mas não entendi ou não consegui aplicar as soluções
propostas, descobri também que existe um outro método que é o
$.getJSON() que ainda estou testanto.

Obrigado desde já!

Luiz Tiago Oliveira

unread,
Jul 5, 2010, 1:52:48 PM7/5/10
to jque...@googlegroups.com
success: function(data) {
alert(data.id); // retorna "id" da resposta do json
}


2010/7/5 Nosferatu <rodrigom...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "jQuery (Brasil)" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para jque...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para jquery-br+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/jquery-br?hl=pt-BR.




--
Luiz Tiago Oliveira
Instrutor iMedia Brasil | Front-End Engineer | Gerente de Projetos
www.luiztiago.com | luiz...@luiztiago.com

Joao Ricardo

unread,
Jul 5, 2010, 1:55:56 PM7/5/10
to jque...@googlegroups.com
o problema é que vc tem que informar que está retornando um json na requisicao HTTP, senão vc vai receber um objeto json, porém em formato de html.. a resposta da requisicao ajax vai tratar o objeto json como string e nao como objeto.

se vc estiver utilizando PHP no lado servidor, é só adicionar esse cabeçalho:

header("content-type: application/json");

Rodrigo Carneiro

unread,
Jul 5, 2010, 2:00:31 PM7/5/10
to jquery-br
Minha resposta vem assim:
["10.0467","10.0612","10.0676","10.0677","10.0678","10.0682","10.0683","10.0684","10.0691","10.0697","10.0698","10.0699","10.0700","10.0701","10.0720","10.0721","10.0729","10.0744"]

É correto?

Jaydson Gomes

unread,
Jul 5, 2010, 2:03:45 PM7/5/10
to jque...@googlegroups.com
Primeiro entenda o que é JSON: http://json.org
Blza. Depois precisa ver o que o pnf.php esta retornando.
Para analisar o JSON de uma maneira visual pode usar o http://braincast.nl/samples/jsoneditor/

Tu também pode usar o console.log do Firebug para ver o objeto JSON.
success: function(data) {
      console.log(data)
}

É isso.
Qualquer dúvida poste ai.

2010/7/5 Luiz Tiago Oliveira <luiz...@gmail.com>



--
Jaydson Gomes
Analista/Desenvolvedor Web
http://jaydson.org
http://meadiciona.com/jaydson

Washington Botelho

unread,
Jul 5, 2010, 2:00:39 PM7/5/10
to jque...@googlegroups.com
Se via GET:

$.getJSON('endereco.que.retorna.a.lista.json', function(list)

    for (var i = 0; i < list.length; i++) {
        alert(list[i].id);
        alert(list[i].nome);
    }
});

Se via POST:

$.post('endereco.que.retorna.a.lista.json', function(list)

    for (var i = 0; i < list.length; i++) {
        alert(list[i].id);
        alert(list[i].nome);
    }
}, 'json'); << tem que indicar que este tipo é json por mais um parâmetro aqui. Não existe $.getPOST();

--
@wbotelhos
Washington Botelho dos Santos {
  http://wbotelhos.com;
}

Rodrigo Carneiro

unread,
Jul 5, 2010, 2:07:20 PM7/5/10
to jquery-br
Eu utilizo o console do firebug para pegar a resposta do pnf.php...

A questão é, tenho que ter o formato $array['campo'] = valor;
Ou basta $array[0] = valor;?

Juarez Gonçalves Nery Junior

unread,
Jul 5, 2010, 2:14:40 PM7/5/10
to jque...@googlegroups.com
Basta usar o json_encode do PHP 5 ele faz tudo e mais um pouco com arrays.

Aliás, veja que o google retorna numa pesquisa simples.


[s]

2010/7/5 Rodrigo Carneiro <rodrigom...@gmail.com>
Eu utilizo o console do firebug para pegar a resposta do pnf.php...

A questão é, tenho que ter o formato $array['campo'] = valor;
Ou basta $array[0] = valor;?

--
Você está recebendo esta mensagem porque se inscreveu no grupo "jQuery (Brasil)" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para jque...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para jquery-br+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/jquery-br?hl=pt-BR.

Luiz Tiago Oliveira

unread,
Jul 5, 2010, 2:20:21 PM7/5/10
to jque...@googlegroups.com
o json_encode do php eh trash.
já perdi muito a cabeça com ele. aconteceu cmg várias vezes que o json q era gerado era inválido.
tenho usado o json do Zend. Muito bom por sinal! :)


2010/7/5 Juarez Gonçalves Nery Junior <juarez...@gmail.com>



--

Juarez Gonçalves Nery Junior

unread,
Jul 5, 2010, 2:24:05 PM7/5/10
to jque...@googlegroups.com
Lembre-se que o json_encode é nativo e retorna sempre em utf8, o Zend_Json é na unha e com alguns parametros que vc pode passar.

Uso e muito o json_encode.

[s]

2010/7/5 Luiz Tiago Oliveira <luiz...@gmail.com>
o json_encode do php eh trash.

Rodrigo Carneiro

unread,
Jul 5, 2010, 2:30:29 PM7/5/10
to jquery-br
@Juarez mas json_encode é exatamente o que eu estou utilizando, pelo que li na documentação do JSON eu posso retornar dados por ele como se fosse um simples array, meu problema é simplesmente resgatar estes valores para poder utiliza-los.

Juarez Gonçalves Nery Junior

unread,
Jul 5, 2010, 2:34:26 PM7/5/10
to jque...@googlegroups.com
E qual a dificuldade?

Se vc faz assim echo json_encode(array('nome'=>'Teste1'));

Pelo JavaScript basta console.log(json.nome);

O php retorna uma string no formato JSON do javascript e não um array de PHP.

[s]

2010/7/5 Rodrigo Carneiro <rodrigom...@gmail.com>
@Juarez mas json_encode é exatamente o que eu estou utilizando, pelo que li na documentação do JSON eu posso retornar dados por ele como se fosse um simples array, meu problema é simplesmente resgatar estes valores para poder utiliza-los.

--
Você está recebendo esta mensagem porque se inscreveu no grupo "jQuery (Brasil)" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para jque...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para jquery-br+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/jquery-br?hl=pt-BR.

Rodrigo Carneiro

unread,
Jul 5, 2010, 2:56:35 PM7/5/10
to jquery-br
A dificuldade é exatamente esta, não consigo pegar o valor aqui no meu javascript, o que eu devo fazer depois de ter o array em json para exibi-lo?

$.ajax({
  type: "POST",
  dataType: 'json',
  url: "pnf.php",
  data: dataString,
  success: function() {
    alert(json.nome);
  }
});

??

Juarez Gonçalves Nery Junior

unread,
Jul 5, 2010, 2:59:31 PM7/5/10
to jque...@googlegroups.com
parametro no success.

[s]

2010/7/5 Rodrigo Carneiro <rodrigom...@gmail.com>
A dificuldade é exatamente esta, não consigo pegar o valor aqui no meu javascript, o que eu devo fazer depois de ter o array em json para exibi-lo?

--
Você está recebendo esta mensagem porque se inscreveu no grupo "jQuery (Brasil)" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para jque...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para jquery-br+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/jquery-br?hl=pt-BR.

Luiz Tiago Oliveira

unread,
Jul 5, 2010, 3:02:42 PM7/5/10
to jque...@googlegroups.com
mais atenção :)

2010/7/5 Rodrigo Carneiro <rodrigom...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "jQuery (Brasil)" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para jque...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para jquery-br+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/jquery-br?hl=pt-BR.



--

Eduardo Green

unread,
Jul 5, 2010, 3:58:11 PM7/5/10
to jque...@googlegroups.com
O retorno da requisição vc manda como string e com o javascript vc recupera da seguinte forma :

json = eval('('+json+')');

Eduardo R. Lima
C: 9106-8090
 





Date: Mon, 5 Jul 2010 15:30:29 -0300
Subject: Re: [jquery-br] Pegar retorno do JSON
From: rodrigom...@gmail.com
To: jque...@googlegroups.com


@Juarez mas json_encode é exatamente o que eu estou utilizando, pelo que li na documentação do JSON eu posso retornar dados por ele como se fosse um simples array, meu problema é simplesmente resgatar estes valores para poder utiliza-los.
--
Você está recebendo esta mensagem porque se inscreveu no grupo "jQuery (Brasil)" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para jque...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para jquery-br+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/jquery-br?hl=pt-BR.


PARA NAVEGAR COM MAIS PRIVACIDADE USE O INTERNET EXPLORER 8. INSTALE GRÁTIS.

Juarez Gonçalves Nery Junior

unread,
Jul 5, 2010, 4:33:46 PM7/5/10
to jque...@googlegroups.com
eval?

jQuery.parseJSON(string)

Veja o fonte do core.


[s]

2010/7/5 Eduardo Green <eduardo...@hotmail.com>

Eduardo Green

unread,
Jul 5, 2010, 4:41:49 PM7/5/10
to jque...@googlegroups.com
Verdade eheheh Também !!


Eduardo R. Lima
C: 9106-8090
 





Date: Mon, 5 Jul 2010 17:33:46 -0300

Subject: Re: [jquery-br] Pegar retorno do JSON
FIQUE MAIS PROTEGIDO ENQUANTO FAZ DOWNLOADS INSTALE GRÁTIS O INTERNET EXPLORER 8.

Rodrigo Carneiro

unread,
Jul 6, 2010, 10:38:52 AM7/6/10
to jquery-br
A função de sucess não tá funcionando! o.o

já tentei até assim:

alert("teste");

Adriano 'Stanley'

unread,
Jul 6, 2010, 10:43:44 AM7/6/10
to jque...@googlegroups.com
Usa o firebug pra verificar o que está chegando da requisição. É melhor do que colocar alerts.. dessa forma vc vê se tem alguma coisa mesmo retornando ou se ele não encontrou o endereço, etc..

Adriano Castro
http://www.enigmapremiado.com.br

Rodrigo Carneiro

unread,
Jul 6, 2010, 10:45:55 AM7/6/10
to jquery-br
Sim... pelo firebug eu consigo ver o objeto JSON feito, mas o que acontece agora é que nem um simples alert dentro da função de sucesso funciona, sem nenhum dado dinâmico!

Juarez Gonçalves Nery Junior

unread,
Jul 6, 2010, 10:47:13 AM7/6/10
to jque...@googlegroups.com
colocou o parametro?

[s]

2010/7/6 Rodrigo Carneiro <rodrigom...@gmail.com>
Sim... pelo firebug eu consigo ver o objeto JSON feito, mas o que acontece agora é que nem um simples alert dentro da função de sucesso funciona, sem nenhum dado dinâmico!

--
Você está recebendo esta mensagem porque se inscreveu no grupo "jQuery (Brasil)" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para jque...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para jquery-br+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/jquery-br?hl=pt-BR.

Rodrigo Carneiro

unread,
Jul 6, 2010, 10:51:08 AM7/6/10
to jquery-br
Sim, coloquei, tirei, tentei só da um alert, e nada.

Rodrigo Carneiro

unread,
Jul 6, 2010, 11:48:21 AM7/6/10
to jquery-br
O alert funcionou, erro meu, esqueci de um ponto e vírgula no final do código, mas agora eu não consigo visualizar o JSON formado, me da um erro no firebug:

Juarez Gonçalves Nery Junior

unread,
Jul 6, 2010, 12:04:54 PM7/6/10
to jque...@googlegroups.com
por que do eval?

2010/7/6 Rodrigo Carneiro <rodrigom...@gmail.com>
O alert funcionou, erro meu, esqueci de um ponto e vírgula no final do código, mas agora eu não consigo visualizar o JSON formado, me da um erro no firebug:

--
Você está recebendo esta mensagem porque se inscreveu no grupo "jQuery (Brasil)" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para jque...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para jquery-br+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/jquery-br?hl=pt-BR.

Rodrigo Carneiro

unread,
Jul 6, 2010, 12:07:34 PM7/6/10
to jquery-br
Eu testei como se ele viesse como string, mas também testei assim:

var objeto = jQuery.parseJSON(json);

Como seria o correto?

Juarez Gonçalves Nery Junior

unread,
Jul 6, 2010, 12:17:36 PM7/6/10
to jque...@googlegroups.com
Veja a documentação do getJSON. Você vai descobrir!

[s]

2010/7/6 Rodrigo Carneiro <rodrigom...@gmail.com>
Eu testei como se ele viesse como string, mas também testei assim:

var objeto = jQuery.parseJSON(json);

Como seria o correto?

--
Você está recebendo esta mensagem porque se inscreveu no grupo "jQuery (Brasil)" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para jque...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para jquery-br+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/jquery-br?hl=pt-BR.

Rodrigo Carneiro

unread,
Jul 6, 2010, 12:22:35 PM7/6/10
to jquery-br
Já li e reli amigo, lá eles dizem que é só você colocar como parâmetro e usar dentro da função, aqui alguns amigos me informaram que a resposta que eu recebo é em texto e que eu tenho que usar o eval(), já testei de todas as maneiras, inclusive desta última, entendo que você não queira me dar a resposta de mão beijada e nem eu quero, mas você poderia ser um pouco mais claro. Eu tô confuso, pq já tentei todas as possibilidades que eu conhecia, ainda estou procurando novas e etc, obrigado, obrigado!

Juarez Gonçalves Nery Junior

unread,
Jul 6, 2010, 12:25:36 PM7/6/10
to jque...@googlegroups.com
http://www.google.com.br/search?sourceid=chrome&ie=UTF-8&q=json%2Bjquery

[s]

2010/7/6 Rodrigo Carneiro <rodrigom...@gmail.com>
Já li e reli amigo, lá eles dizem que é só você colocar como parâmetro e usar dentro da função, aqui alguns amigos me informaram que a resposta que eu recebo é em texto e que eu tenho que usar o eval(), já testei de todas as maneiras, inclusive desta última, entendo que você não queira me dar a resposta de mão beijada e nem eu quero, mas você poderia ser um pouco mais claro. Eu tô confuso, pq já tentei todas as possibilidades que eu conhecia, ainda estou procurando novas e etc, obrigado, obrigado!

--
Você está recebendo esta mensagem porque se inscreveu no grupo "jQuery (Brasil)" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para jque...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para jquery-br+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/jquery-br?hl=pt-BR.

Rodrigo Carneiro

unread,
Jul 6, 2010, 12:34:34 PM7/6/10
to jquery-br
http://img685.imageshack.us/img685/2548/ggl.png

Obrigado pela ajuda pessoal, encerro por aqui, vou resolver o meu problema de modo convencional, depois retorno a tentar resolver o problema com JSON, jQuery e PHP.


Reply all
Reply to author
Forward
0 new messages