À espera de dados JSON a ser analisado
Pergunta
Existe uma maneira de esperar por método getJSON do jQuery?
Eu quero analisar os dados, recebidas com esta função e apenas retornar falso / verdadeiro se uma seqüência específica está contida. Mas, devido ao processamento dos dados assíncronos este parece não ser tão fácil. Aqui está um trecho de código:
contained = false;
$.getJSON(URL, function ( data ) {
$.each( data, function( i, item ) {
if ( item.Info.code == code ) contained = true;
});
});
Depois de código thid, a função, em que este código é colocado em, devolve o valor 'continha', whis é basicamente falso, porque getJSON ainda não terminou.
Solução
Você poderia tentar fazer um pedido síncrono, como este:
$.ajax({
type: "GET",
url: "www.foo.com",
data: data
async: false,
dataType: "json"
});
Outras dicas
A solução adequada não é o que torna síncrona (isto é possível, mas não é aconselhável). Ele está usando uma chamada de retorno de forma adequada. programação assíncrona leva tempo para se acostumar, mas vale a pena.
Em vez de:
function foo()
{
...
contained = false;
$.getJSON(URL, function ( data ) {
$.each( data, function( i, item ) {
if ( item.Info.code == code ) contained = true;
});
});
// Do something with contained
}
fazer:
function getContained(containedCallback)
{
$.getJSON(URL, function(data)
{
var contained = false;
$.each( data, function( i, item ) {
if ( item.Info.code == code ) contained = true;
});
containedCallback(contained);
}
);
}
function foo()
{
...
getContained(function(contained)
{
// Do something with contained
});
}
Obrigado por sua resposta. Eu só definir o processo para síncrona:
$.ajaxSetup({'async': false});
Depois disso, usei o meu código. Trabalhando muito bem!
Mais opções jQuery Ajax aqui