JavaScript - Cuando se ejecuta la instruccion innerHTML?

 
Vista:

Cuando se ejecuta la instruccion innerHTML?

Publicado por Jaime (2 intervenciones) el 22/07/2007 17:58:17
Saludos a todos..

Agradeceria a quien me pueda sacar de la siguiente duda:

Estamos intentando realizar una validacion en una pagina por medio de ajax (un script hallado en internet), para ello guardamos el valor de "responseText' en el innerHTML de una etiqueta div y acto seguido consultamos ese valor.

La duda es:
Porque al consultar el valor de ese div despues de realizar la asignacion, el valor que retorna el getElementById(DivID).innerHTML es el mismo que tenia antes de haberla realizado.

El codigo usado es el siguiente:

// Esta funcion realiza la asignacion al DIV (esta en un archivo: ajax.js)
function ObtenerDatos(datos,divID)
{
var peticion = false;

if (window.XMLHttpRequest)
{
peticion = new XMLHttpRequest();
} else if (window.ActiveXObject)
{
peticion = new ActiveXObject("Microsoft.XMLHTTP");
}

if(peticion)
{
var retorno;
var obj = document.getElementById(divID);
peticion.open("GET", datos);
peticion.onreadystatechange=function()
{
if (peticion.readyState == 4)
{
obj.innerHTML = peticion.responseText;
}
}
peticion.send(null);
}
}

// Esta funcion realiza la verificacion (esta en un archivo: ajax.js).
function verificar(divID)
{
if (document.getElementById(divID).innerHTML=='Se guardo el centro de costos')
alert ("Se guardo!!");
else
alert (document.getElementById(divID).innerHTML);
}

// Y este es el llamado a las dos fuciones que se encuentra el la pagina HTML.
<input type="submit" onclick="ObtenerDatos('../scripts/gcco.php?nomb=cccc&desc=dddd','x');verificar('x');" value="Validar">

<div id="x"></div>
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
Imágen de perfil de ScriptShow
Val: 2.019
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

RE:Cuando se ejecuta la instruccion innerHTML?

Publicado por ScriptShow (692 intervenciones) el 22/07/2007 19:47:50
Saludos,

No sé si entiendo bien el tema. Conviene tener encuenta que "innerHTML" no guarda el dato; realmente lo transfiere de forma virtual al un "DIV" p.e., en el lado cliente. Por tanto, al intentar recuperar la información, vemos que no existe, no está grabada en ningún sitio, sólo aparece virtualmente, pero no forma parte de la página.

Disculpar si no he captado bien la duda planteada.
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:Cuando se ejecuta la instruccion innerHTML?

Publicado por Gonzalo (107 intervenciones) el 23/07/2007 08:14:21
El problema es que la llamada que haces para obtener el centro de coste es *asíncrona*.

Lo que esto quiere decir es que cuando haces:

peticion.onreadystatechange=function() {
····if (peticion.readyState == 4) {
········obj.innerHTML = peticion.responseText;
····}
}

Eso no se llama de forma inmediata. A eso se le llamará cuando se reciba la respuesta desde el servidor.

Si llamas a ObtenerDatos e inmediatamente después llamas a verificar, cuando se ejecute verificar, todavía no se habrá recibido la respuesta.
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:Cuando se ejecuta la instruccion innerHTML?

Publicado por jaime (2 intervenciones) el 27/07/2007 01:45:16
Gracias por la respuesta Gonzalo ( y tambien a Scriptshow)..

Pero entonces Gonzalo.. si no es abusar mucho.. por casualidad ud sabe donde puedo encontrar la forma de hacer esa peticion de forma sincrona?? es decir que el flujo de instrucciones solo continue despues de tener por completo la respuesta del servidor.

De antemano (y de nuevo) gracias.
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:Cuando se ejecuta la instruccion innerHTML?

Publicado por Gonzalo (107 intervenciones) el 27/07/2007 08:02:43
Prueba a buscar en un buscador. Hay bastantes tutoriales por ahí y en algunos lo explican.

Siento no ponerte ningún enlace concreto pero es que, en realidad, en la mayoría de casos no vas a querer hacerlo de forma síncrona. Piensa que si lo haces síncrono, el navegador se congela hasta que se reciba la respuesta. Si tarda digamos 30 segundos, esos 30 segundos el navegador se queda totalmente paralizado esperando.
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