2016-03-19 19 views
0

konsol boş bir dizi gösterilmektedirBir yöntem gövdesinden bir diziye bir itme yürütürken, veriler, yöntem gövdesi kapsamının ötesinde kalıcı değil midir?

<hibernate-mapping> 
    <class name="nl.sander.mieras.localhost.sakila.Actor" table="actor" catalog="sakila"> 

aşağıdaki index.html

<!DOCTYPE html> 
<meta charset="utf-8"> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 
<script> 

var nodes = []; 

    $.get("mappings/Actor.hbm.xml", function(d){  
    nodes.push({"id":nodes.length, 
     "label":$(d).find("class").attr("table"), 
     "x":0, 
     "y":0 
     });    
}); 
    console.log(nodes) 

</script> 

ve XML aşağıdaki outtake göz önüne alındığında [] Yöntem I dışında console.log (düğümleri) koymak vücut. Veri düğümleri dizisine veri aktarımı, yöntem gövdesinin kapsamı dışında kalmaz gibi görünüyor.

console.log (düğümler) edebilmek ve nesneyi görebilmek için, itme veriyi var düğümleri dizisine nasıl devam ettiririm/saklar/kaydedersiniz (teknik js terimini bilmiyorlar) boş bir dizi yerine?

+0

İtme ifadesinin tamamen yürütüldüğünden emin misiniz? İtme sadece istek başarılı olursa yürütülür. Bir yan not olarak, tutarsız sekme, bu kodu okumayı çok zor hale getirir. – rmehlinger

+0

@rmehlinger Korkunç sekmeleri işaretlediğiniz için, bu sorudaki kodu yapıştırdığım şekilde yapmak zorunda kaldım. Onu düzenleyeceğim. –

+0

@ Roamer-1888 Bu cevabı kendi başıma bulamadım, ama evet bu benim soruma cevaptır. Bir kopya olarak gösterdiğiniz için teşekkür ederiz. –

cevap

3

AJAX isteğiniz geri gelmeden önce nodes yazıyormuşsunuz gibi görünüyor. Unutmayın, JavaScript senkronize değildir, bu nedenle geri aramanız hemen çağrılmamaktadır. Sonra bir zaman aşımı ve ayarı nodes baskı deneyin:

setTimeout(function() { console.log(nodes) }, 2000); 

AJAX çağrısı karşılaştığınız alınan kesin sorunu için geri aramasında ele alınmalıdır tepkisiyle yapmanız gereken ne olursa olsun; Verilerin henüz mevcut olmadığını garanti etmenin başka bir yolu yok.

+0

Evet, öyle. Teşekkürler. JS'nin asenkron doğası buradaki sorunların farkında değildi. –

İlgili konular