Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problema con AJAX

Estas en el tema de Problema con AJAX en el foro de Frameworks JS en Foros del Web. Hola amigos el inconveniente es el siguiente: deseo mostrar 2 contenidos en diferentes contenedores mediante AJAX y para eso estoy utilizando el siguiente codigo: var ...
  #1 (permalink)  
Antiguo 02/02/2009, 12:32
 
Fecha de Ingreso: octubre-2003
Mensajes: 52
Antigüedad: 20 años, 6 meses
Puntos: 0
Problema con AJAX

Hola amigos el inconveniente es el siguiente:
deseo mostrar 2 contenidos en diferentes contenedores mediante AJAX y para eso estoy utilizando el siguiente codigo:

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

function verifica(fuenteDatos, divID)
{
if(XMLHttpRequestObject)
{
var obj = document.getElementById(divID);
document.getElementById(divID).innerHTML="Procesan do...";
XMLHttpRequestObject.open("GET", fuenteDatos);
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)
{
obj.innerHTML = XMLHttpRequestObject.responseText;
}
}
XMLHttpRequestObject.send(null);
}
}


y en mi pagina llamo asi a la funcion


<table>
<tr>
<td>
<div id="respuesta"></div>
<script>verifica('pagina1.jsp','respuesta');</script>
</td>
<td>
<div id="detalle"></div>
<script>verifica('otrapagina.jsp','detalle');</script>
</td>
</tr>
</table>

e aui donde ocurre el problema ... solamente carga el contenido en el segundo DIV --> <div id="detalle"></div>

Al parecer el AJAX solo permite cargar una sola vez.

¿Alguna sugerencia para poder cargar mas de un contenido?

gracias
  #2 (permalink)  
Antiguo 02/02/2009, 14:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problema con AJAX

Hola carlodem7,

Tienes que instanciar tu objeto AJAX dentro de tu función verifica, porque de lo contrario te pasa lo que expones, pierdes el request anterior ya que se cancela con el nuevo.

Saludos
  #3 (permalink)  
Antiguo 02/02/2009, 14:35
 
Fecha de Ingreso: octubre-2003
Mensajes: 52
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Problema con AJAX

ahora he encontrado algo un poco mas eleborado


function nuevoAjax(xmlhttp){

try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp
}

function cargarContenido(pagina,destino){
var contenedor;
var ajax;

contenedor = document.getElementById(destino);
ajax = nuevoAjax(ajax);
ajax.open("GET", pagina, true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
contenedor.innerHTML = ajax.responseText;
}
}
ajax.send(null);
}



y los llamo de la siguiente manera

<script>cargarContenido('pagina1.jsp','respuesta') ;</script>
<script>cargarContenido('pagina2.jsp','detalles'); </script>

bueno con esto al parecer se soluciono el problema pero me di cuenta que solo me funciona con Mozilla Firefox .... pero no logro hacerlo funcionar con internet explorer debido que solo carga el primer div y el segundo div no.
lo he estado probando con IE 7 y sistema opeerativo Win Vista

alguna idea??
  #4 (permalink)  
Antiguo 02/02/2009, 14:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problema con AJAX

Es lo mismo, tienes que declarar como local la variable en xmlhttp dentro de nuevoAjax, de lo contrario se vuelve global.

Saludos
  #5 (permalink)  
Antiguo 03/02/2009, 06:42
 
Fecha de Ingreso: octubre-2003
Mensajes: 52
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Problema con AJAX

Cita:
Iniciado por GatorV Ver Mensaje
Es lo mismo, tienes que declarar como local la variable en xmlhttp dentro de nuevoAjax, de lo contrario se vuelve global.

Saludos

Ya declare como local la variable que me mencionaste .. pero sigue con el mismo error solo me funciona en firefox y no en IE ....

Tu crees que puedas agregar en el codigo la sugerencia que me estas dando?? es posible que yo la este aplicando mal ..

gracias por tu ayuda
  #6 (permalink)  
Antiguo 03/02/2009, 10:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problema con AJAX

Prueba así:
Código javascript:
Ver original
  1. function nuevoAjax(){
  2. var xmlhttp;
  3. try {
  4.       xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  5. } catch (e) {
  6.       try {
  7.             xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  8.      } catch (E) {
  9.             xmlhttp = false;
  10.      }
  11. }
  12. if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  13.          xmlhttp = new XMLHttpRequest();
  14. }
  15.  
  16. return xmlhttp;
  17. }
  18.  
  19. function cargarContenido(pagina,destino) {
  20.       var contenedor;
  21.       var ajax;
  22.  
  23.       contenedor = document.getElementById(destino);
  24.       ajax = nuevoAjax();
  25.       ajax.open("GET", pagina, true);
  26.       ajax.onreadystatechange=function() {
  27.             if (ajax.readyState==4) {
  28.                   contenedor.innerHTML = ajax.responseText;
  29.            }
  30.       }
  31.       ajax.send(null);
  32. }

Saludos
  #7 (permalink)  
Antiguo 03/02/2009, 11:30
 
Fecha de Ingreso: octubre-2003
Mensajes: 52
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Problema con AJAX

Gracias GatorV por tomarte el tiempo de revisar este caso .. lamentablemente con el script que me proporcionaste tampoco funciona en internet explorer 7.
tan solo funciona en firefox.

seguiremos en la prueba y falla a ver que pasa.

saludos
  #8 (permalink)  
Antiguo 03/02/2009, 12:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problema con AJAX

Mmm muy extraño, te recomendaría mejor migrar a una solución mas fuerte como usar prototype, que es lo que yo uso, es simplemente hacer un new Ajax.Updater y ya con eso, funciona en todos los exploradores que lo he probado.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:53.