Por que minha matriz está se comportando de maneira diferente fora de uma função AJAX? (preenchendo jsTree) [duplicado]
Esta pergunta já tem uma resposta aqui:
Por que minha variável permanece inalterada depois de modificá-la dentro de uma função? - Referência de código assíncrona respostasLonga história, estou criando uma matriz semelhante a JSON para jsTree. O que eu não entendo é por que o array é perfeito para minhas necessidades na função de sucesso do AJAX, mas está quebradolado de for dessa função. Confira a captura de tela no meu dump do console, você pode ver as diferenças. Por que é diferente dentro da função e fora da função?
Essencialmente, não posso fazer o que preciso, a menos que esteja no formato perfeito: (myAry dentro da função)
O que dá, cara?
var myAry = [];
$.ajax({
type: "GET",
url: "parents.xml",
dataType: "xml",
success: function(xml) {
$(xml).find('group').each(function() {
myAry.push({
"id": $(this).find('GroupID').text(),
"parent": "#",
"text": $(this).find('GroupName').text(),
});
}); //end each loop
//this array is PERFECT
console.log(myAry);
} //end success function
}); //end ajax GET
//THIS ARRAY IS BORKED
console.log(myAry);
xml:
<groups>
<group>
<GroupID>1</GroupID>
<GroupName>Instructional Assistant</GroupName>
</group>
<group>
<GroupID>2</GroupID>
<GroupName>Technician</GroupName>
</group>
<group>
<GroupID>3</GroupID>
<GroupName>HR Specialist</GroupName>
</group>
</groups>