Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!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.Obrigado Angelo.
Vou dar uma estudada nesse código de exemplos que postou e tentar fazer testes.
E posto aqui novamente se deu certo ou não.
Muito grato pela atenção!
>
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!!Como eu havia citado, era só colocar uma variável fora da função.
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.
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.