Ir para conteúdo
Cesar Melo

Retorno de função com JSON

Recommended Posts

Olá, gostaria de uma ajuda para retornar um resultado de uma função. Dentro dessa função, eu faço uma requisição através do $.getJSON(), e gostaria que função retornasse o resultado que obtido na requisição JSON.

Ex:

function pedidoGet() {
	var pedido;
	$.getJSON(
		"getters.php",
		{param1: "pedidoId"},
		function (data) {
			pedido= data[0];
			console.log(pedido) 
			//aqui, ainda dentro da requisição, a variavel "pedido" tem o valores que foi 
			//retornado pela requisição getJSON
		}
	);
	console.log(pedido) //aqui, não retorna nada
	return pedido; //aqui, essa variavel pedido não tem mais os valores que a requisição getJSON retornou.
}

var pedidoTeste= pedidoGet();
//depois que chamar a funçõa, gostaria de ter os valores para usar como for melhor pra mim.
console.log(pedidoTeste.id); 
console.log(pedidoTeste.valor);

Conseguiram entender minha necessidade?

 

Desde já, agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você já testou se o PHP devolve o que você pede pelo GET?

É preciso ter certeza que tipo de dados o PHP lhe devolve e então manipulá-lo conforme sua necessidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Angelo. Sim, o PHP devolve sim o que peço pelo GET, tanto que dentro da chamada getJSON, quando eu escrevo lá "console.log(pedido)", ele mostra o resultado que eu quero.

Porem, isso só funciona dentro da "function" que está dentro do getJSON.

Eu gostaria de ter essas informações fora dessa função, para que eu possa colocar os valores que eu preciso em div's separadas sem ter que ficar chamado a função getJSON toda hora.

Minha intensão é chamar a função apenas uma vez, e ter um "array" ou um "objeto" com os valores de resposta da requisição.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplos com fetch, axios e $.getJSON aqui.

 

Uma opção melhor ainda com uma ótima abstração baseada no fetch - Ky

 

Outra alternativa seria você colocar uma variável fora do escopo da função.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 18/09/2018 at 08:36, angelorubin disse:

Exemplos com fetch, axios e $.getJSON aqui.

 

Uma opção melhor ainda com uma ótima abstração baseada no fetch - Ky

 

Outra alternativa seria você colocar uma variável fora do escopo da função.

 

Angelo, pesquisei um pouco e consegui chegar ao resultado que eu queria.

Eu encontrei um exemplo que achei que resolveria, mas não funcionou no meu caso.. mas tenho que fazer outros teste..

Veja só:

var pedido=null;
$.getJSON(
   "getters.php",
   {param1: "pedidoId"},
   function(data){
      pedido= data;
   }
);

//porem isso não funcionou
console.log(pedido.id); //imprime null
console.log(pedodo.valor); //imprime null

 

Abaixo segue o exemplo que funcionou:

var pedido= funcPedido();
function funcPedido(){
  var saida=null;
  $.ajax({
    async: false,
    dataType: "json",
    url: "getter.php",
    data: {param1: "pedidoId"},
    success: function(data) {
      saida= data;
    }
  });
  return saida;
}

console.log(pedido.id); //isso funcionou
console.log(pedido.valor); //isso funcionou \o/

Muito obrigado pela ajuda Angelo!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, é verdade, comentou sim sobre a variável fora da função.. porem isso não funcionou com o $.getJSON()..
Só funcionou com $.ajax().

Uma outra coisa que não entendi foi:

var pedido= funcPedido();
function funcPedido(){
   //procedimentos...
}

A variável receber uma função vazia, e depois a função ser criada..

Tentei criar a função, e depois declarar a variável recebendo a função. Isso não funcionou. Vou pesquisar sobre isso para ter um melhor entendimento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por ZeroCood
      Senhores bom dia, preciso pegar um retorno de uma api da procob ele retorna um json, nao estou conseguindo pegar o retorno, alguem pode me ajudar, veja o codigo: 
      { "code": "000", "message": "Consulta de testes com dados fictícios", "date": "2019-03-19", "hour": "10:07:41", "content": { "nome": { "existe_informacao": "SIM", "conteudo": { "documento": "99999999999", "tipo_documento": "PF", "nome": "JOÃO DA SILVA", "outras_grafias": [ "JOÃO D SILVA", "JOÃO SILVA" ], "data_nascimento": "15/06/1979", "outras_datas_nascimento": [ "25/06/1979" ], "idade": "26", "signo": "Gêmeos", "obito": "NAO", "sexo": "M", "uf": "RS,CE,", "situacao_receita": "REGULAR", "situacao_receita_data": "2016-10-17", "situacao_receita_hora": "11:02:49", "estrangeiro": { "existe_informacao": "SIM", "estrangeiro": "NAO", "pais_origem": { "codigo": "10", "origem": "Brasileiro" } } } }, "dados_parentes": { "existe_informacao": "SIM", "conteudo": [ { "documento": "88888888888", "nome": "MARIA DA SILVA", "campo": "mae", "obito": "NAO", "tipo_beneficio": "", "aposentado": "NAO" } ] }, "pessoas_contato": { "existe_informacao": "SIM", "conteudo": [ { "documento": "77777777777", "nome": "LUIZ SOUZA", "endereco": "SAO CLEMENTE", "bairro": "CENTRO", "cep": "44642000", "cidade": "VARJOTA", "uf": "CE" } ] }, "pesquisa_enderecos": { "existe_informacao": "SIM", "conteudo": [ { "logradouro": "RUA", "endereco": "SAO CLEMENTE", "bairro": "CENTRO", "cidade": "VARJOTA", "numero": "13", "cep": "44642000", "bloco": "", "apto": "", "casa": "", "quadra": "", "lote": "", "complemento": "", "uf": "CE" } ] }, "trabalha_trabalhou": { "existe_informacao": "SIM", "conteudo": [ { "documento": "92787126000176", "nome": "PADARIA PETER PÃO", "logradouro": "RUA", "endereco": "INÁCIO DA SILVA", "bairro": "CENTRO", "cidade": "CURITIBA", "numero": "999", "cep": "87878787", "bloco": "", "apartamento": "", "casa": "", "quadra": "", "lote": "", "complemento": "", "uf": "PR", "telefones": [ { "ddd": "99", "telefone": "99999999", "tipo": "fixo" } ] } ] }, "contato_preferencial": { "existe_informacao": "SIM", "conteudo": { "telefone_fixo": { "ddd": "99", "telefone": "99999999" }, "telefone_celular": { "ddd": "99", "telefone": "99999999" }, "telefone_outros": { "ddd": "41", "telefone": "33333333" }, "parentes": { "documento": "99999999999", "nome": "MATHEUS ALENCAR", "tipo": "pai" }, "contatos": { "documento": "99999999999", "nome": "MARIA ROBERTA PEREIRA" }, "empregador": { "documento": "99999999999", "nome": "JOAO NASCIMENTO SANTOS" }, "email": "email@email.com", "endereco": { "endereco": "FRANCISCO JOSE", "numero": "42", "cidade": "Curitiba", "estado": "PR", "cep": "99999999" } } }, "residentes_mesmo_domicilio": { "existe_informacao": "SIM", "conteudo": [ { "nome": "CARLA TEIXEIRA", "documento": "99999999999" }, { "nome": "LUIZ PEREIRA", "documento": "99999999999" } ] }, "emails": { "existe_informacao": "SIM", "conteudo": [ { "email": "joao@email.com", "pontuacao": "0" }, { "email": "joao.fernando@email2.com", "pontuacao": "0" } ] }, "numero_beneficio": { "existe_informacao": "SIM", "conteudo": { "numero": "999999999", "ano_aposentadoria": "7", "tipo_aposentadoria": "Aposentadoria Por Tempo De Contribuição", "aposentado": "SIM", "inss": "SIM", "acidente_trabalho": "SIM", "afastado_doenca": "SIM", "emprestimo": "SIM", "banco_nome": "Itaú Unibanco S.A.", "banco_agencia": "DUQUE DE CAXIAS/JARDIM PRIMAVERA", "banco_endereco": "ROD. WASHINGTON LUIZ, S/Nº", "banco_numero": "0", "banco_complemento": "QUADRA 3 - LOTE 5", "banco_bairro": "PARQUE SANTA LÚCIA", "banco_c_e_p": "99999999", "banco_cidade": "DUQUE DE CAXIAS", "banco_estado": "RJ" } }, "alerta_participacoes": { "existe_informacao": "SIM", "conteudo": { "existe": "SIM", "quantidade": 3 } }, "pesquisa_telefones": { "existe_informacao": "SIM", "conteudo": { "fixo": [ { "ddd": "51", "telefone": "11111111", "operadora": "Embratel - Fixo", "pontuacao": "0" } ], "celular": [ { "ddd": "41", "telefone": "22222222", "operadora": "TIM - Celular", "pontuacao": "0" } ], "outros": [ { "ddd": "41", "telefone": "33333333", "operadora": "OI - Fixo", "pontuacao": "0" } ], "comercial": [ { "ddd": "51", "telefone": "66666666", "operadora": "Embratel - Fixo", "pontuacao": "0" } ] } }, "outros_documentos": { "existe_informacao": "NAO" } } }  
      como faço para pegar esse json e mostrar cada um exe: comercial: -- , outros documentos: --
       
    • Por _badi_
      Preciso de ajuda! Pode parecer uma dúvida besta, mas sou nova nessa área e não estou conseguindo resolver essa questão da facul!
      A questão é:
      1)      Faça o fluxograma e depois faça o código em Javascript de um programa  que lê  3 notas obtidas por um aluno e depois calcule  e imprima a média dos para avaliação, usando  a fórmula abaixo. Imprimir depois o conceito, conforme a tabela abaixo. Use o prompt no javascript e um botão que mostre a média e o conceito depois que do clique no mesmo.
      MA = (Nota1 + Nota2 x 2 + Nota3 x 3 + ME )/7
      Média de Aproveitamento
      Conceito
      10
      A
      7,5 e < 10
      B
      4,0 e < 7,5
      C
      < 4,0
      D
       
      Meu código ficou assim:
      <!DOCTYPE html> <html> <head>      </head> <body> Para calcular sua media e saber seu conceito, clique no botao abaixo: <br> <br> <button onclick='mostra()'>Try it</button> <p id="resp"></p> <br> <br> <script>     function mostra(){         var nota1 = prompt ("Digite a nota 1");         var resp1 = parseInt (nota1);         var nota2 = prompt ("Digite a nota 2");         var resp2 = parseInt (nota2);         var nota3 = prompt ("Digite a nota 3");         var resp3 = parseInt (nota3);         var ME = (resp1 + resp2 + resp3)/3;         var MA = resp1 + (resp2 * 2) + (resp3 * 3) + ME/7;         if (MA=10) {             document.getElementById("resp").innerHTML=("Sua media foi " + ME + " e seu conceito foi A!");         } else if (MA=7.5&&MA<10){             document.getElementById("resp").innerHTML=("Sua media foi " + ME + " e seu conceito foi B!");         } else if (MA=4&&MA<7.5){             document.getElementById("resp").innerHTML=("Sua media foi " + ME + " e seu conceito foi C!");         } else if (MA<4){             document.getElementById("resp").innerHTML=("Sua media foi " + ME + " e seu conceito foi D!");         }         }          </script> </body> </html>  
      Mas sempre volta como conceito A, não importa os valores que coloco :(
      Obrigado!
       
    • Por Eduardo S. B. de Oliveira
      Senhores, preciso de uma ajuda, estou criando um formulário onde o checkbox fique "checked" quando clicar em cima, mas o detalhe e que quando atualizar a pagina o checkbox permaneça marcado. É possível? 
    • Por alh
      Estou seguindo as especificações corretamente do git. https://github.com/opencartbrasil/opencart-rest-api/blob/master/README.md
      Estou tendo o erro ao acessar minha página de integração:
      ERRO: Not found (entity)
      Ao acessar minha página que contém o seguinte código: categorias.php
       
      No arquivo abaixo estou colocando a minha KEY e domínio correto.
      <?php $headers = array(); $headers[] = 'Content-Type: application/json'; $headers[] = 'key: MINHAKEY'; // // Replace key value for API key OpenCart (Only numbers and letters) $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => 'http://www.NOMEDOMEUDOMINIO.com.br/api.php/categories', // Replace domain and table name CURLOPT_HTTPHEADER => $headers, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_SSL_VERIFYPEER => false ]); $out = curl_exec($ch); curl_close($ch); print_r( $out ); // Result json ?>
    • Por jaquelss
      Estava fazendo download de coisas que uso no trabalho, mas parece que esqueci de algo. Sempre dá esse erro, mas tecnicamente parece que tá tudo ok?
      Eu esqueci algum programa ou algo do código em si?
      Agradeço desde já.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.