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

Ayuda con Ajax

Estas en el tema de Ayuda con Ajax en el foro de Frameworks JS en Foros del Web. Hola... Recurro a ustedes porque son los expertos en el tema... Siguiendo lo aprendido por medio de dos tutoriales, construí el siguiente ajax: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 27/02/2011, 12:45
 
Fecha de Ingreso: enero-2011
Ubicación: Cali
Mensajes: 73
Antigüedad: 13 años, 9 meses
Puntos: 2
Pregunta Ayuda con Ajax

Hola...

Recurro a ustedes porque son los expertos en el tema...

Siguiendo lo aprendido por medio de dos tutoriales, construí el siguiente ajax:

Código Javascript:
Ver original
  1. function llamarasincrono (url, id_contenedor)
  2.  {
  3.      var pagina_requerida = false;
  4.      
  5.      if (window.XMLHttpRequest) // Para identificar navegador Mozilla FF o otros navegadores que no sean IE
  6.      {
  7.          pagina_requerida = new XMLHttpRequest();
  8.      }
  9.      else if (window.ActiveXObject) // Para identificar versiones de IE
  10.      {
  11.          var versionesObj = new Array('Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP');
  12.          
  13.          for (var i = 0; i < versionesObj.length; i++) // for para recorrer el Array de versiones
  14.          {
  15.              try
  16.              {
  17.                  return new ActiveObject(versionesObj[i]);
  18.              }
  19.              catch(e)
  20.              {
  21.              }
  22.          }
  23.      }
  24.      else
  25.      return false;
  26.      pagina_requerida.onreadystatechange = function()
  27.      {
  28.          cargarpagina(pagina_requerida,id_contenedor);
  29.      }
  30.      pagina_requerida.open("GET",url,true);
  31.      pagina_requerida.send(null);
  32.  }
  33.  
  34. function cargarpagina (pagina_requerida, id_contenedor)
  35. {
  36.     switch (pagina_requerida.readyState)
  37.     {
  38.         case 0: document.getElementById(id_contenedor).innerHTML = "Sin iniciar la carga de información";
  39.         break;
  40.        
  41.         case 1: document.getElementById(id_contenedor).innerHTML = "cargando la información";
  42.         break;
  43.        
  44.         case 2: document.getElementById(id_contenedor).innerHTML = "Información cargada";
  45.         break;
  46.        
  47.         case 3: document.getElementById(id_contenedor).innerHTML = "Puede Interactuar con los demás objetos de la página";
  48.         break;
  49.        
  50.         case 4: document.getElementById(id_contenedor).innerHTML = "Carga de información completada";
  51.         break;
  52.     }
  53.         document.getElementById(id_contenedor).innerHTML = pagina_requerida.responseText;
  54. }

Esta programación me funciona muy bien en FF y Safari. Pero en Chorme, Opera e IE, no me funciona. En cuanto a IE me aparece la ventana de error en la línea: pagina_requerida.open("GET",url,true); Pero la verdad, con base en lo que sé del tema, no veo el error.

¿Cuál será la razón? Por favor necesito ayuda.

Última edición por gcrlink; 27/02/2011 a las 12:51
  #2 (permalink)  
Antiguo 27/02/2011, 16:08
 
Fecha de Ingreso: enero-2011
Ubicación: Cali
Mensajes: 73
Antigüedad: 13 años, 9 meses
Puntos: 2
Información Respuesta: Ayuda con Ajax

Saludos...

Pues trabjando un poco con el código y estudiando un poco más sobre ajax ya conseguí que el código publicado arriba me funcione para IE, y pues también sigue funcionando con FF y Safari. Lo único que tuve que hacer fue invertir el orden interno de la condición window.XMLHttpRequest por el window.ActiveXObject.

Para explicarme mejor les presento como me ha quedado el código hasta ahora para que lo comparen con el código anteriormente publicado.

Código Javascript:
Ver original
  1. function llamarasincrono (url,id_contenedor)
  2.  {
  3.      var pagina_requerida = false;
  4.      
  5.      if (window.ActiveXObject) // Para identificar versiones de IE
  6.      {
  7.           var versionesObj = new Array('Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP');
  8.          
  9.          for (var i = 0; i < versionesObj.length; i++) // for para recorrer el Array de versiones
  10.          {
  11.              try
  12.              {
  13.                  pagina_requerida = new ActiveXObject(versionesObj[i]);
  14.              }
  15.              catch(e)
  16.              {
  17.              }
  18.          }
  19.      }
  20.      else if (window.XMLHttpRequest) // Para identificar navegador Mozilla FF o otros navegadores que no sean IE
  21.      {
  22.          pagina_requerida = new XMLHttpRequest();
  23.      }
  24.      else
  25.      return false;
  26.      pagina_requerida.onreadystatechange = function()
  27.      {
  28.          cargarpagina(pagina_requerida,id_contenedor);
  29.      }
  30.      pagina_requerida.open("GET",url,true);
  31.      pagina_requerida.send(null);
  32.  }
  33.  
  34.  
  35. function cargarpagina (pagina_requerida,id_contenedor)
  36. {
  37.     switch (pagina_requerida.readyState)
  38.     {
  39.         case 0: document.getElementById(id_contenedor).innerHTML = "Sin iniciar la carga de información";
  40.         break;
  41.        
  42.         case 1: document.getElementById(id_contenedor).innerHTML = "cargando la información";
  43.         break;
  44.        
  45.         case 2: document.getElementById(id_contenedor).innerHTML = "Información cargada";
  46.         break;
  47.        
  48.         case 3: document.getElementById(id_contenedor).innerHTML = "Puede Interactuar con los demás objetos de la página";
  49.         break;
  50.        
  51.         case 4: document.getElementById(id_contenedor).innerHTML = "Carga de información completada";
  52.         break;
  53.     }
  54.         document.getElementById(id_contenedor).innerHTML = pagina_requerida.responseText;
  55. }

Pero todavía no consigo que me funcione para CHROME y OPERA.

POR FAVOR AYUDAAAAA....
  #3 (permalink)  
Antiguo 28/02/2011, 15:40
 
Fecha de Ingreso: enero-2011
Ubicación: Cali
Mensajes: 73
Antigüedad: 13 años, 9 meses
Puntos: 2
Sonrisa Respuesta: Ayuda con Ajax

Saludos...



Disculpen pero soy un tonto de primera...

El script ajax que contruí funciona bien en todos los navegadores (FF, Chrome, Opera, Safari, IE).

Lo que pasaba y que no tomé en cuenta es que en el caso de Chrome y Opera necesariamente tiene que abrirse la página desde un servidor local o desde un servidor web autoriazado. De lo contrario el Ajax no funcionará en estos dos navegadores.

Pero estoy contento porque aprendí algo nuevo y mi código funciona.

Perdonen la molestia que les di a todos.

El código quedó de la siguiente forma:

Código Javascript:
Ver original
  1. function llamarasincrono (url,id_contenedor)
  2.  {
  3.      var pagina_requerida = false;
  4.      
  5.      if (window.ActiveXObject) // Para identificar versiones de IE
  6.      {
  7.           var versionesObj = new Array('Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP');
  8.          
  9.          for (var i = 0; i < versionesObj.length; i++) // for para recorrer el Array de versiones
  10.          {
  11.              try
  12.              {
  13.                  pagina_requerida = new ActiveXObject(versionesObj[i]);
  14.              }
  15.              catch(e)
  16.              {
  17.              }
  18.          }
  19.      }
  20.      else if (window.XMLHttpRequest) // Para identificar navegador Mozilla FF o otros navegadores que no sean IE
  21.      {
  22.          pagina_requerida = new XMLHttpRequest();
  23.      }
  24.      else{
  25.      return pagina_requerida;
  26.      }
  27.      pagina_requerida.onreadystatechange = function()
  28.      {
  29.          cargarpagina(pagina_requerida,id_contenedor);
  30.      }
  31.      pagina_requerida.open("GET",url,true);
  32.      pagina_requerida.send(null);
  33.  }
  34.  
  35.  
  36. function cargarpagina (pagina_requerida,id_contenedor)
  37. {
  38.     switch (pagina_requerida.readyState)
  39.     {
  40.         case 0: document.getElementById(id_contenedor).innerHTML = "Sin iniciar la carga de información";
  41.         break;
  42.        
  43.         case 1: document.getElementById(id_contenedor).innerHTML = "cargando la información";
  44.         break;
  45.        
  46.         case 2: document.getElementById(id_contenedor).innerHTML = "Información cargada";
  47.         break;
  48.        
  49.         case 3: document.getElementById(id_contenedor).innerHTML = "Puede Interactuar con los demás objetos de la página";
  50.         break;
  51.        
  52.         case 4: document.getElementById(id_contenedor).innerHTML = "Carga de información completada";
  53.         break;
  54.     }
  55.         document.getElementById(id_contenedor).innerHTML = pagina_requerida.responseText;
  56. }

Espero que el mismo les ayude en algo para sus pruebas y construcciones Ajax.

Etiquetas: ajax
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 17:05.