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

Problema Ajax en https

Estas en el tema de Problema Ajax en https en el foro de Frameworks JS en Foros del Web. Hola A todos les comento el caso: 1. http://www.interpagos.net/ajax1.php funciona bien en firefox y en IE 2. El mismo script pero en https si funciona ...
  #1 (permalink)  
Antiguo 16/07/2010, 10:45
Avatar de conetsol  
Fecha de Ingreso: mayo-2004
Mensajes: 60
Antigüedad: 20 años, 6 meses
Puntos: 0
Problema Ajax en https

Hola A todos les comento el caso:

1. http://www.interpagos.net/ajax1.php funciona bien en firefox y en IE
2. El mismo script pero en https si funciona en firefox pero no en IE:

https://secure.interpagos.net/ajax1.php

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script>

function creaAjax(){
         var objetoAjax=false;
         try {
          /*Para navegadores distintos a internet explorer*/
          objetoAjax = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
          try {
                   /*Para explorer*/
                   objetoAjax = new ActiveXObject("Microsoft.XMLHTTP");
                   }
                   catch (E) {
                   objetoAjax = false;
          }
         }

         if (!objetoAjax && typeof XMLHttpRequest!='undefined') {
          objetoAjax = new XMLHttpRequest();
         }
         return objetoAjax;
}

 function FAjax (url,capa,valores)
{
          var ajax=creaAjax();
          var capaContenedora = document.getElementById(capa);

/*Creamos y ejecutamos la instancia si el metodo elegido es POST*/

         ajax.open ('POST', url, true);
         ajax.onreadystatechange = function() {
         if (ajax.readyState==1) {
                          capaContenedora.innerHTML="Cargando.......";
         }
         else if (ajax.readyState==4){
                   if(ajax.status==200)
                   {
                        document.getElementById(capa).innerHTML=ajax.responseText;
                   }
                   else if(ajax.status==404)
                                             {

                            capaContenedora.innerHTML = "La direccion no existe";
                                             }
                           else
                                             {
                            capaContenedora.innerHTML = "Error: ".ajax.status;
                                             }
                                    }
                  }
         ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
         ajax.send(valores);
         return;

} 

</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form method="post"  action="#"> <input name="" type="button" value="Button" onclick="FAjax('ajax2.php','capaContenedora','campo1=1');"  />
</form>
<div id="capaContenedora">

div
</div>
</body>
</html> 
Muchas gracias por su ayuda!!!!!
  #2 (permalink)  
Antiguo 16/07/2010, 10:46
Avatar de conetsol  
Fecha de Ingreso: mayo-2004
Mensajes: 60
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Problema Ajax en https

Especifico la línea del error:

document.getElementById(capa).innerHTML=ajax.respo nseText;


Gracias!
  #3 (permalink)  
Antiguo 16/07/2010, 14:55
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Problema Ajax en https

IExplorer es bien conocido por la cantidad de problemas que genera, incluso un simple innerHTML falla a veces, por lo que podrias probar:

Código Javascript:
Ver original
  1. var newContent = ajax.responseText;
  2.     var mainTarget = document.getElementById(target);
  3.     try { // Esto funciona perfecto con los navegadores reales
  4.         mainTarget.innerHTML = newContent;
  5.     } catch (e) { // Solución para IExplorer
  6.         mainTarget.innerHTML = ''; // Eliminar contenido original
  7.         var wrapDiv = document.createElement('div'); // Crear nuevo elemento
  8.         wrapDiv.innerHTML = newContent; // Asignar respuesta al nuevo elemento
  9.         mainTarget.appendChild(wrapDiv); // Insertar nuevo elemento
  10.     }

Solo adaptalo a tus necesidades.
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 16/07/2010, 16:04
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Problema Ajax en https

Hola

Cita:
Iniciado por Triby Ver Mensaje
IExplorer es bien conocido por la cantidad de problemas que genera, incluso un simple innerHTML falla a veces, por lo que podrias probar:
No sabía que podía levantar esos errores. Me gusta tu propuesta
@conetsol
he revisado el código fuente de las url que dejastes y hay algo que no has entendido
Cita:
var wrapDiv = document.createElement('capaContenedora'); // Crear nuevo elemento
createElement crea un elemento y capaContenedora no es un elemento, sino la id de un elemento. Lo único que puede modificar del código que ha brindado @Triby es
Cita:
var mainTarget = document.getElementById(target)
cambia el argumento target por la id de tu div 'capaContenedora'

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Etiquetas: ajax, https
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 12:37.