ugrás a tartalomhoz

XML feldolgozás

benbozso · 2010. Feb. 26. (P), 13.26
Sziasztok!

Több XML fájlt használok. Mikor elérek egy feltételhez, betöltök egy másik XML-t, majd ennek az elemeire hivatkozva mennék tovább.
Na most nem mükszik rendesen, mert hiába olvastam be az XML-t egy változóba, mikor hivatkozom rá, még a korábbi XML-hez tartozó értéket adja.
Mintha valami fázis csúszás lenne, mert ha XML beolvasás után rakok egy Alert-t, akkor rendben az újonnan beolvasott XML-ben szereplő értéket adja. Próbáltam Pause funkcióval, de úgy sem OK.
Az XML beolvasást ebben ilyen formában csinálom
function loadXML(local)

{

xmlhttp=null;

url=local".xml";

// code for Mozilla, etc.
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
// code for IE
else if (window.ActiveXObject)
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
if (xmlhttp!=null)
{

xmlhttp.onreadystatechange=onResponse;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
else
{
alert("Your browser does not support XMLHTTP.");
}
}
Az onResponse()-ban hozom létre a beolvasott XML-nek a változót.

Mi okozhatja ezt a "késést" illetve, hogyan lehetne megoldani, hogy rendben megkapja az új beolvasott XML-t.
 
1

AJAX

Poetro · 2010. Feb. 26. (P), 13.32
Mint tudod, azért hívják AJAX-nak, mert aszinkron, azaz el fog telni egy idő mire beolvassa az adatot a szerverről, de a program futása erre az időre nem áll meg. Egymás után töltődnek be az adatok, de erről csak egy eseményben értesülsz, amikor betöltődik. Azaz a programodat eseményekre kell bontani, és az eddig betöltött adatokat el kell tárolni, hogy a következő eseményben majd fel tudd dolgozni.
2

Ez milyen esemény? Mondjuk az

benbozso · 2010. Feb. 26. (P), 14.30
Ez milyen esemény?
Mondjuk az onResponse()-ban használom az:
if(checkReadyState(xmlhttp))
{
xmlDoc = xmlhttp.responseXML.documentElement;
....}
feltételt, ahol a checkReadyState-ben vizsgálom az állapotot:
function checkReadyState(obj)
{

if(obj.readyState == 4)
{
return true;
if(obj.status == 200)
{ return true; }
else { alert("Problem retrieving XML data");
return false; } }
return false;
}
Akkor ezek szerint ilyen módon a checkReadyState()-el tudom (kell) vizsgálnom, vagy van talán más megoldás?
Köszi az eddigi segítséget is. Haza értem ki is kell próbálnom :-))