Bom dia pessoal!!
Estou com um problema que talvez para vocês seja muito fácil de resolver!
Não consigo copiar o resultado para a variável registroJson, já perdi quase um dia nesse problema;
$(document).ready(function(){
var registroJson = [];
var url = 'xpto';
$.getJSON(url,function(data){
registroJson = data; //copiando para variavel registroJson o resutado 'data'
// já tentei registroJson.push(data) e tabem não funciona
});
console.log(registroJson); //o resultado no console sempre mostra [], array vazio
});
Coloque a linha console.log(registroJson);
dentro do getJSON
que irá funcionar.
Porque isso? Simples. A função getJSON
faz uma chamada AJAX assíncrona à um recurso. Quando essa chamada é feita, uma requisição é realizada, mas o código javascript continua executando, ou seja, a linha console.log(registroJson);
poderá ser executada antes mesmo da requisição obter uma resposta, e isso fará que ela seja mostrada como array vazio.
1 curtida
É exatamente o que o @Lucas_Camara falou. Outra dica, utilize os eventos do jQuery para realizar as ações de callback. O getJson tem os eventos done, fail e always.
Ex: https://gist.github.com/hugodias/bad41f16293ed542c0299452a273e769