XML - No se leer los cambios de un xml

 
Vista:

No se leer los cambios de un xml

Publicado por Kijuna (3 intervenciones) el 06/11/2008 15:51:58
Hola,
explicaré mi problema, con el que he estado hoy 5 horas sin avanzar nada :(

el tema es que tengo que leer un archivo xml en javascript, modificar un dato y ver el resultado y pasa algo que no entiendo

leo el xml bien, lo modifico, veo que se ha modificado, pero hasta que no cierro el explorer y lo vuelvo a abrir (no me vale ni refrescar la página) no se entera de los cambios...

lo he hecho en javascript

a ver si alguien me echa una mano, que a este paso veo que me echan xD

este es el jsp que llama al javascript

------------------------------------------------------------------------------------------------------------------------------------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Sala I+D</title>
<link href="estilosala.css" rel="stylesheet" type="text/css" media="screen" />
<script type="text/javascript" src="actualizadatos.js"></script> ---------------aqui esta el javascript del xml
<script type="text/javascript" src="epochprime_classes.js"></script>

<link rel="stylesheet" type="text/css" href="rating.css" />
<script type="text/javascript" src="http://yui.yahooapis.com/2.3.0/build/yahoo/yahoo-min.js"></script>
<script type="text/javascript" src="http://yui.yahooapis.com/2.3.0/build/dom/dom-min.js"></script>
<script type="text/javascript" src="http://yui.yahooapis.com/2.3.0/build/event/event-min.js"></script>
<script type="text/javascript" src="http://yui.yahooapis.com/2.3.0/build/element/element-beta-min.js"></script>
<script type="text/javascript" src="lib/curry.js"></script>
<script type="text/javascript" src="rating.js"></script>


</head>
<body onload="javascript:actualizaDatos()"> ------de aqui saca los datos para rellenar la página

<div id="logo">
<h1><a href="#">Sala I+D</a></h1>
</div>
<div id="menu">
<ul>



<li class="first"><a href="index.jsp" accesskey="1" title="">Home</a></li>
<li><a href="permisos.jsp" accesskey="2" title="">Permisos</a></li>
<li><a class="last" href="reservas.jsp" accesskey="3" title="">Reservas</a></li>
<li><a href="identificar.jsp" accesskey="2" title="">Login</a></li>

</ul>
</div>
<hr/>

<div id="page">
<!-- start sidebar -->
<%
String e = (String)session.getAttribute("e");
String nombre = (String)session.getAttribute("nombre");
String apellidos = (String)session.getAttribute("apellidos");
String numtarjeta = (String)session.getAttribute("numtarjeta");
String esta = (String)session.getAttribute("esta");
String permisos = (String)session.getAttribute("permisos");
String correo = (String)session.getAttribute("correo");
String admin= (String)session.getAttribute("admin");

if (e!=null){
if ( e.equals("usuariovalido"))
{

%>

--aqui rellena los datos del usuario
<div id="sidebar">
<h2 class="title">Mis Datos</h2>
<ul>
<li><b>Nombre:</b> <%=nombre%></li>
<li><b>Apellidos:</b> <%=apellidos%></li>
<li><b>Nº Tarjeta:</b> <%=numtarjeta%></li>
<li><b>Correo:</b> <%=correo%></li>
<li><b>Permisos:</b> <%=permisos%></li>
<%
if (esta!=null){
if (esta.equals("1")){ %>
<li><b>Esta:</b> Sí</li>
<% }
}
else { %>
<li><b>Esta:</b> No</li>
<%} %>
</ul>

</div>
<!-- end sidebar -->


<!-- start content -->

--y aqui los datos del resto de las personas
<div id="content">

<div class="post">
<div class="tabla" id="tablaPersonas">

</div>
<!-- <p class="meta">Posted on November 5, 2007 by <a href="#">Someone</a>  |  <a href="#">32 comments</a></p> -->
</div>
</div>
<div id="content">
<div class="post">
<br><br>
<h3 class="title">Información Usuario</h3>
<div id="infoUser"></div>
</div>
</div>

</div>
<!-- end content -->
<%}
}
else {%>
<div id="sidebar">
<ul>
<li>
<h2 class="title">Aviso</h2>
<div id="infoUser">
Identifíquese para poder trabajar con el sistema.
</div>
</li>
</ul>
</div>

<%} %>
</body>
</html>
---------------------------------------------------------------------------------------------------------------------------------------

bueno creo que el jsp no es el problema pero por si acaso os lo he puesto, ahora el javascript:

---------------------------------------------------------------------------------------------------------------------------------------

Edit: lo pongo debajo que no cabe
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:No se leer los cambios de un xml

Publicado por Kijuna (3 intervenciones) el 06/11/2008 15:52:22
var flag;
var nivel;
var nivel2;
var flag2=1;
var url;
var peticion;

function actualizaDatos(){

alert('Voy a actualizar, se supone... '+flag);
flag=1;
flag2++;

url = null;
url = "http://10.***.**.***:8080/interact/bb/get/person/*/*";
peticion=null;
peticion = crearObjetoHttpXml();

peticion.open("GET",url,true);
peticion.onreadystatechange = usuariosRecibida;
peticion.send(null);
}

function crearObjetoHttpXml()
{
//alert('creo objeto...'+ flag);
req = false;
if(window.XMLHttpRequest){
req = new XMLHttpRequest();
alert('y esto?');
}
else {
if(window.ActiveXObject){
try{
req = new ActiveXObject("Microsoft.XMLHttp");
return req;
}
catch (e) {
alert('Fallo');
}
}
}
return req;
}


function usuariosRecibida(){

if(peticion.readyState==4){
if(peticion.status==200){
var c = peticion.responseText;
try
{
if(window.ActiveXObject)//Internet Explorer
{
xmlDoc=null;
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(c);
}

}
catch(e)
{
alert(e.message)
}
var html2 = []; --aqui saco los datos del usuario al jsp

html2.push('<h2 class="title"><a href="#">Permisos de Usuarios</a></h2>');
html2.push('<div class="entry"><br><br>');
html2.push('<form id="personas">');
if (flag!=1){
html2.push('<select onchange="javascript:actualizaDatos()">');
}
else{
html2.push('<select onchange="javascript:muestraDatosUser(this.value)">');
flag=1;
}
x=xmlDoc.documentElement.childNodes;
for (i=0;i<x.length;i++)
{
if (x[i].nodeType==1)
{
y=xmlDoc.getElementsByTagName("entity")[i].attributes;
id = y.getNamedItem("id").nodeValue;
html2.push('<option value=',id,'>');
html2.push(x[i].childNodes[0].childNodes[0].nodeValue);
html2.push("</option>");
}
}
html2.push('</select>');
html2.push('</form>');
html2.push('</div>');
document.getElementById("tablaPersonas").innerHTML= html2.join("");
}
}
}

function muestraDatosUser(id){
flag=0;
url=null;
url = "http://10.***.**.***:8080/interact/bb/get/id/"+id+"/*";
peticion = crearObjetoHttpXml();
peticion.open("GET",url,true);
peticion.onreadystatechange = datosUserRecibidos;
peticion.send(null);

}

function datosUserRecibidos(){
if(peticion.readyState==4){
if(peticion.status==200){
var c = peticion.responseText;
alert('c'+c);
try //Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(c);
}
catch(e)
{
alert(e.message)
}
var html2 = [];
html2.push('<table class="stats"><tr><td>');
x=xmlDoc.documentElement.childNodes;
y=xmlDoc.getElementsByTagName("entity")[0].attributes;

id = y.getNamedItem("id").nodeValue;

-- aqui rellenamos la informacion del usuario que elijamos
for (i=0;i<x.length;i++)
{
if (x[i].nodeType==1)
{
html2.push('<ul>');
html2.push('<li>Nombre: ', x[i].childNodes[0].childNodes[0].nodeValue, '</li>');
html2.push('<li>Apellidos: ', x[i].childNodes[1].childNodes[0].nodeValue, '</li>');
html2.push('<li>Nº Tarjeta: ', x[i].childNodes[2].childNodes[0].nodeValue, '</li>');
html2.push('<li>Correo: ', x[i].childNodes[4].childNodes[0].nodeValue, '</li>');
html2.push('<li>Permisos: ', x[i].childNodes[5].childNodes[0].nodeValue, '</li>');
nivel=x[i].childNodes[5].childNodes[0].nodeValue;

nivel++;
x[i].childNodes[5].childNodes[0].set

--subimos el nivel de permisos y luego lo cambiamos en el otro metodo

html2.push('<li>Esta: ', x[i].childNodes[3].childNodes[0].nodeValue, '</li>');
html2.push('</ul></td><td>');
html2.push('<div align="center"><img src=" ', x[i].childNodes[6].childNodes[0].nodeValue, '" width="100" heigth="100"></div></td></tr>');
html2.push('<tr>');
html2.push('<td><input type="button" name="primerboton" value="Sube Permiso" onclick="javascript:cambiaPermisos(',id,')"/><td></tr>');

}
}
html2.push('</table>');
document.getElementById("infoUser").innerHTML= html2.join("");


}
}
}



function cambiaPermisos(id){

url=null;
url = "http://10.***.**.***:8080/interact/bb/set/id/"+id+"/props/permisos?value="+nivel;

peticion=null;
peticion = crearObjetoHttpXml();
peticion.open("GET",url,true);
peticion.onreadystatechange = respuestaPermisosValue;
peticion.send(null);

}

function refresh()
{
alert('refresco');
window.location.reload();
}

function respuestaPermisosValue(){
if(peticion.readyState==4){
if(peticion.status==200){
actualizaDatos();
refresh();
}
}
}


Entonces, el tema es que me han dicho que acceda al xml con esta url para ver a todas las personas:

"http://10.***.***.***:8080/interact/bb/get/person/*/*"

Así veo la info de la persona deseada:

"http://10.***.**.***:8080/interact/bb/get/id/"+id+"/*"

y que para modificar lo de los permisos lo haga entrando en esta url:

"http://10.***.***.***:8080/interact/bb/set/id/"+id+"/props/permisos?value="+nivel;

y mi problema no es que no funcione ni lo hag, que lo hace, porque con esas url veo el xml y con la del cambio, efectivamente cambia el permiso, pero es que luego llamo a actualizar datos para que lea el xml otra vez y muestre la información actualizada, pero nada...

por mucho que el xml haya cambiado, cada vez que llamo a actualizaDatos salen los mismos datos del principio, y aunque refresque la pagina, aunque cambie de página y vuelva, haga lo que haga no se entera del cambio. Sólo se entera cuando cierro el explorer y lo vuelvo a abrir, entonces si lee los cambios, pero claro, eso no es nada útil...

qué es lo que hago mal, o cómo puedo arreglarlo?

Un saludo y muchas gracias!!!!

P.D: Resumen: leo un xml, lo cambio, veo en el xml que efectivamente se ha cambiado, pero en la página, cuando vuelvo a leer el xml, no lee los cambios hasta que no cierro y abro el navegador.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No se leer los cambios de un xml

Publicado por kijuna (3 intervenciones) el 07/11/2008 15:58:32
Como no había manera de ver qué pasaba porque yo sabía que lo cambiaba bien, de momento lo dejo por imposible, eso sí, he conseguido que se vea medio bien cambiando las opciones del explorer, haciendo que compruebe cada vez si hay cambios en la página...es la única manera de que se entere :(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar