Las funciones que utilizo son estas:
Código Javascript:
Ver original
var procesamiento, xml = null, contador=0; function MostrarRegistro() { try { document.getElementById("registro").innerHTML ='<p>'+ xml.getElementsByTagName('seccion')[contador].firstChild.nodeValue+'</p>'; contador ++; } catch(e) { document.getElementById("registro").innerHTML = ''; contador = 0; } } function MostrarNombres() { var ajax = objetoAjax(); ajax.open('get','archivo.xml'); ajax.onreadystatechange = function() { if(ajax.readyState == 4){ if(ajax.status == 200) { xml=ajax.responseXML; if(xml.getElementsByTagName('seccion').length > 0) procesamiento = window.setInterval(MostrarRegistro, 4000); } } } ajax.send(null); } function objetoAjax() { if (window.XMLHttpRequest) _ajax = new XMLHttpRequest(); else if (window.ActiveXObject) _ajax = new ActiveXObject("Microsoft.XMLHTTP"); else _ajax = false; return _ajax; } window.onload=MostrarNombres(); function pedir(dato) { Ajax = objetoAjax(); Ajax.open("get","recuperar.php?seccion=" + dato, true); Ajax.onreadystatechange = function() { if (Ajax.readyState == 4 && (Ajax.status == 200 || Ajax.status == 501)){ document.getElementById('recuperar_datos').innerHTML=Ajax.responseText; } } Ajax.send(null); }
y en el script donde tengo que mostrar los datos de la funcion MostrarNombres tengo un select con el evento onchange y la funcion pedir(), hasta aqui es lo que me funciona bien, osea que el xml me lo cambia segun la opcion que elija en el select.
seria algo asin:
Código PHP:
Ver original
<head> <script type="text/javascript" language="javascript" src="funciones.js"></script> </head> <body> <form method="get"> <select name="seccion" id="seccion" onchange="pedir(document.getElementById('seccion').value)"> ... </select> </form> <div id="recuperar_datos"></div> <div id="registro"></div>
y en el script recuperar.php creo el xml que me cambiara de forma asincronica, en resumen, yo quiero que cuando cambie de forma asincronica el archivo xml, la funcion MostrarNombres que me carga en pantalla actualice sus valores tambien de forma asincronica.
Espero que se me entienda esto y me puedan ayudar a entender como hacerlo, saludos.