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 user32
      Olá pessoal,
      sempre fui um curioso na programação e agora estou começando entender o javascript.
       
      Eu tenho uma function que pega o valor da var num1 e compara com o numero 5 e o  10. Se (num1 == 5) ele deveria informar no elemResult o resultado de num1*num2 e se num1 == 10 seria  num1*num3 e se não for nenhuma das 2 opções ele apresentará um OK no elemResult.
       
      Mas sempre que o valor é 5 ou 10 ele nunca executa... mas se nao for nenhuma das 2 opções ele apresenta o OK.
       
      Na verdade a minha intenção era reconhecer uma sequencia de numeros como por exemplo se num1 for igual a algum numero entre 1-10 ele faz num1*num2 se for 11-20 executar num1*num3. Mas nao estou conseguindo nem reconhecer o numero e executar a funçao...
       
      toda ajuda é bem vinda, desde já agradeço
       
       
      <script type="text/javascript"> function funcao1() { var num1 = Number(document.getElementById("num1").value); var elemResult = document.getElementById("total"); var num2 = "90"; var num3 = "75" if (num1 == 5 ) { elemResult.textContent = String(num1 * num2) + "."; } else if (num1 == 10 ) { elemResult.textContent = String(num1 * num3) + "."; } else { // IE elemResult.innerText = String("Ok") + "."; } } </script>  
    • Por clickanapolis
      Bom dia, no meu site coloquei ao clicar no link ele vai para uma div dentro da propria pagina, visto que a mesma e uma unica pagina.
       
      O problema é que quando clica no link ele esta parando fora do inicio da div, o que devo fazer?
       
      <script type="text/javascript"> jQuery(document).ready(function ($) { $(".scroll").click(function (event) { event.preventDefault(); $('html,body').animate({ scrollTop: $(this.hash).offset().top }, 1000); }); }); </script> e chamo o link assim:
       
      <li><a href="#acimetech" class="scroll">A Cimetech</a></li>  
    • Por Kelven
      Galera to enfrentando um problema, no meu tumblr to querendo colocar o popup de newsletter do Mailchimp, até ai tudo bem, é pra funcionar que nem no script abaixo, porém esse script só funciona se eu excluir aquela parte que está marcada, porém se eu excluir ela o tema do tumblr não funciona como deveria em celulares. Alguém sabe me dizer que tipo de conflito é esse e como posso resolver???
      <script type='text/javascript' src='http://space.fitterbiz.com/wp-includes/js/wp-embed.min.js?ver=4.9.10'></script> <script type="text/javascript" src="//downloads.mailchimp.com/js/signup-forms/popup/embed.js" data-dojo-config="usePlainJson: true, isDebug: false"></script> <script> function showMailingPopUp() { require( ["mojo/signup-forms/Loader"], function(L) { L.start({"baseUrl":"mc.us14.list-manage.com","uuid":"7f359a9e538573b27c9e39820","lid":"e64535f817"}) } ); document.cookie = 'MCPopupClosed=;path=/;expires=Thu, 01 Jan 1970 00:00:00 UTC;'; document.cookie = 'MCPopupSubscribed=;path=/;expires=Thu, 01 Jan 1970 00:00:00 UTC;'; } document.getElementById("open-popup").onclick = function() {showMailingPopUp()}; </script> <a onclick="showMailingPopUp(); return false;" id="open-popup" style="cursor:pointer">Subscribe!</a> <!-- quando coloco isso não funciona --> <script src="https://static.tumblr.com/xlsgtjb/mt5o305mz/scripts.min.js" charset="UTF-8"></script> <!-- quando coloco isso não funciona -->
    • Por Kelven
      Olá pessoal tudo bem?
       
      Então eu quero colocar um formulário de newsletter em um servidor q não tem suporte para php, o negócio é q depois que a pessoa clica em se cadastrar eu quero que ela seja redirecionada para outro site, então gostaria de saber como posso estar fazendo isso usando apenas javascript, jquery ou ajax com o API do Mailchimp? Porque já procurei muito e não achei, só achei em php.
×

Informação importante

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