Foros del Web » Programando para Internet » Javascript »

Llamada a archivo PHP no se ejecuta en IE

Estas en el tema de Llamada a archivo PHP no se ejecuta en IE en el foro de Javascript en Foros del Web. Hola a todos, En mi aplicación hago una llamada a un archivo PHP, pero ésta se ejecta sólo si uso FFox y, en cambio, no ...
  #1 (permalink)  
Antiguo 23/02/2010, 17:10
 
Fecha de Ingreso: enero-2009
Mensajes: 173
Antigüedad: 15 años, 9 meses
Puntos: 1
Llamada a archivo PHP no se ejecuta en IE

Hola a todos,

En mi aplicación hago una llamada a un archivo PHP, pero ésta se ejecta sólo si uso FFox y, en cambio, no se realiza si utilizo IExplorer. Ya he revisado y buscado bastante, pero no consigo solucionarlo. Ojalá me puedan ayudar

Gracias.

La llamada al archivo PHP:

Código Javascript:
Ver original
  1. location.href="http://scarrasco-xp/WEB/INDIGENAS/MIGR_Int/download.php?archivo="+archivos[indiceActual];
  2.                          alert("LLAMO la funcion en download.php");

El IE se salta la línea "location.href= ..."

El archivo PHP:

Código PHP:
Ver original
  1. <?php
  2.  
  3. if (!isset($_GET['archivo']) || empty($_GET['archivo'])) {
  4.     exit();
  5. }
  6.  
  7. $root = "http://scarrasco-xp/WEB/INDIGENAS/MIGR_Int/ExcelFiles/";
  8.  
  9. $archivo = basename($_GET['archivo']);
  10. $path = $root.$archivo;
  11. $size = filesize($path);                                                                                                                                                
  12.  
  13.  
  14. $type = "";                                                              
  15.  
  16.     $type = "application/vnd.ms-excel";                                                                    
  17.                                                                          
  18.     header("Content-Type:$type");                                        
  19.     header("Content-Disposition: attachment; filename=\"$archivo\"");  
  20.     header("Content-Transfer-Encoding:binary");                          
  21.     header("Content-Length: " . $size);                                  
  22.     readfile($path);                                                      
  23.  
  24. ?>

El resultado que estoy obteniendo es que mientras desde FFox descargo el/los archivos; desde IExplorer NO!!
  #2 (permalink)  
Antiguo 23/02/2010, 17:33
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Llamada a archivo PHP no se ejecuta en IE

¿Podrías postear todo el javascript, y la forma en que llamas a la función que ejecuta el location.href?

Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 23/02/2010, 19:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Tema movido desde PHP a Javascript
  #4 (permalink)  
Antiguo 23/02/2010, 19:41
 
Fecha de Ingreso: enero-2009
Mensajes: 173
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Llamada a archivo PHP no se ejecuta en IE

De acuerdo, gracias por responder spider_boy.

Aquí la línea asociada al botón para descargar el/los archivos xls:

Código HTML:
Ver original
  1. <button type="button" height="10px" widht="50px" name="Guardar" onClick=Descarga()>Descargar archivos </button><br>

La función "Descarga()"

Código Javascript:
Ver original
  1. <script language="JavaScript" type="text/JavaScript">
  2.  
  3.  var archivos=new Array();//estas variables van fuera de las funciones para que estén disponibles globalmente
  4.  var indiceActual=1;
  5.  var downloader;
  6.     function Descarga(){
  7.  
  8.             var x =1;
  9.  
  10.                                  
  11.                                  var Noptions = document.forms["form1"].selector3.length;
  12.                                    
  13.                   for (i = 0; i < Noptions; i++) {
  14.                
  15.                    if(document.form1.selector3.options[i].selected)
  16.                          {
  17.                         archivos[x]=document.form1.selector3.options[i].value;//Se cargan los archivos a descargar en esta variable global
  18.                                                 inic = archivos[x].indexOf("_I")
  19.                                                 inic++
  20.                         fin=inic + 6
  21.                         tiene=archivos[x].substring(inic,fin) // Esto lo he usado solo para seguir el código
  22.                         alert("pasa por aquí y tiene =" + tiene)
  23.                         if(tiene == "IE.htm")
  24.                         {
  25.                                                          archivos[x]=archivos[x].replace("IE.htm","Otro.xls");
  26.                                                 }
  27.                         else
  28.                              {
  29.                                     archivos[x]=archivos[x].replace(".htm",".xls");
  30.                                  }  
  31.                             x++;
  32.                                                 }
  33.                       }
  34.                                     indiceActual=1;
  35.                                     downloader=setInterval('descargame();',1000);
  36.                                     }
  37.  
  38.                                  function descargame()//Aqui se define la función que se encargará de llamar a las descargas.
  39.                  {
  40.                  if(archivos[indiceActual])
  41.                         {
  42.                                                  location.href="http://scarrasco-xp/WEB/INDIGENAS/MIGR_Int/download.php?archivo="+archivos[indiceActual];
  43.                                                indiceActual++;
  44.                         }
  45.                  else
  46.                         {
  47.                        indiceActual=1;
  48.                        archivos=new Array();
  49.                        clearInterval(downloader);//una vez que se han descargado todos, se elimina el intervalo y se limpian las variables
  50.                        }
  51.                  }
  52.  
  53. </script>

Gracias por la ayuda.
  #5 (permalink)  
Antiguo 24/02/2010, 07:10
 
Fecha de Ingreso: enero-2009
Mensajes: 173
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Llamada a archivo PHP no se ejecuta en IE

Será que alguien me puede ayudar por favor?...
  #6 (permalink)  
Antiguo 24/02/2010, 07:17
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Llamada a archivo PHP no se ejecuta en IE

A ver, no he podido probarlo debido a que no tengo el formulario que usas

Pero probemos... javascript no es mi fuerte

Veo que tienes <button type="button"...></button>, la verdad es que nunca lo he usado. Busqué y según w3schools está soportado por la mayoría de los navegadores, incluyendo IE, de lo cual no me fio...

Probemos lo siguiente, cambia estas líneas :

Código HTML:
Ver original
  1. <button type="button" height="10px" widht="50px" name="Guardar" onClick=Descarga()>Descargar archivos </button>

Por esta línea :

Código HTML:
Ver original
  1. <input type="button" height="10px" widht="50px" name="Guardar" onClick="Descarga();" value="Guardar archivos" />

Prueba todo tu sistema con el cambio de las 2 líneas anteriores, si no pasa nada, prueba cambiando location.href por window.location, si no pasa nada, vuelve a lo que tenías y luego seguimos investigando.

PD : Invocando a los expertos en javascript
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #7 (permalink)  
Antiguo 24/02/2010, 10:15
 
Fecha de Ingreso: enero-2009
Mensajes: 173
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Llamada a archivo PHP no se ejecuta en IE

Apliqué ambas sugerencias, pero lamentablemente ninguna de ellas dio resultado; sigo sin conseguir la descarga desde IE. Un dato que podría ayudar a enfocar la mirada para dar con la solución es que el problema se encuentra exactamente en esta línea:

Código Javascript:
Ver original
  1. location.href="http://scarrasco-xp/WEB/INDIGENAS/MIGR_Int/download.php?archivo="+archivos

y en particular en la parte de

Código Javascript:
Ver original
  1. ".../download.php?"

puesto que si reemplazo esto por

Código Javascript:
Ver original
  1. .../MIGR_Int/ExcelFiles/unarchivo.xls
entonces sí que funciona la descarga, pues en este caso sí que IE lee la línea de código
  #8 (permalink)  
Antiguo 24/02/2010, 11:47
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Llamada a archivo PHP no se ejecuta en IE

Ufff... No sé que pueda ser... probé algo similar a tu código

Archivo test1.php

Código HTML:
Ver original
  1.     <head>
  2.         <script>
  3.             function download() {
  4.                 location.href="test.php?file=asd.JPG";
  5.             }
  6.         </script>
  7.     </head>
  8.     <body>
  9.         <input type="button" value="Descargar" onclick="download();" />
  10.     </body>
  11. </html>

Archivo test.php

Código PHP:
Ver original
  1. $type = "image/jpeg";
  2. $archivo = $_GET['file'];
  3. $size = filesize($archivo);
  4. header("Content-Type:$type");
  5. header("Content-Disposition: attachment; filename=\"$archivo\"");
  6. header("Content-Transfer-Encoding:binary");
  7. header("Content-Length: " . $size);
  8. readfile($archivo);

Lo probé con una imagen llamada asd.JPG, y la verdad me funcionó en ambos, la imagen está en la misma carpeta que los archivos, así que no tuve que especificar una ruta completa.

Se que en firefox te funciona, pero has probado a ver que te devuelve archivos[indiceActual]? Para ver como queda la ruta completa al archivo. ¿Has probado a poner algo como http://localhost/... en vez de http://scarrasco-xp/...?

Me avisas. Ahí vemos que hacemos. Nos vemos
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #9 (permalink)  
Antiguo 24/02/2010, 12:28
Avatar de hector2c  
Fecha de Ingreso: noviembre-2007
Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 17 años
Puntos: 25
Pregunta Respuesta: Llamada a archivo PHP no se ejecuta en IE

mmmmmm, lee este post...

metele esto cada vez que abras un script:

Código PHP:
<script type="text/javascript" language="javascript"
mmmm, no se mucho de javascript, tal vez te sirva

Código PHP:
window.location "direccion.php" 
__________________
blog: hector2c.wordpress.com
email: [email protected]
  #10 (permalink)  
Antiguo 24/02/2010, 14:30
 
Fecha de Ingreso: enero-2009
Mensajes: 173
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Llamada a archivo PHP no se ejecuta en IE

Gracias a los dos por la atención que me han prestado, lamentablemente el problema continúa después de haber probado cada sugerencia que me han hecho. Respecto a lo que me devuelve archivos[indiceActual] está bien y para cada opción seleccionada en selector 3 me entrega el nombre del archivo xls asociado, algo como: BO_Migr_01_Otro.xls lo que es correcto.

Seguiré intentando...
  #11 (permalink)  
Antiguo 26/02/2010, 10:42
 
Fecha de Ingreso: enero-2009
Mensajes: 173
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Llamada a archivo PHP no se ejecuta en IE

Bueno, tarde un poco en encontrar el problema y solucionarlo. Definitivamente se encontraba en una linea de codigo del archivo php que mostre al inicio de mi consulta,lo agrego ahora con las modificaciones y comentarios del caso con la idea de que pueda servir por si otros se encuentran con un problema similar.

Gracias a los que intentaron ayudarme y al blog que me permitio dar con la solucion definitiva "http://blog.unijimpe.net/forzar-descarga-con-php/".

El codigo que funciona tanto en IE como en FFox:

Código PHP:
Ver original
  1. <?php
  2. if (!isset($_GET['archivo']) || empty($_GET['archivo'])) {
  3.     exit();
  4. }
  5.  
  6. // Esta linea generaba el problema...
  7. // ***************************************
  8. // $root = "http://scarrasco-xp/WEB/INDIGENAS/MIGR_Int/ExcelFiles/";
  9. // ***************************************
  10.  
  11. $root = "ExcelFiles/"; // Ruta relativa a la carpeta en que esta el archivo xls,partiendo desde donde se encuentra el "download.php"
  12. $archivo = basename($_GET['archivo']);
  13. $path = $root.$archivo;
  14. $size = filesize($path);
  15.  
  16.  
  17. $type = "";
  18. // Ambas lineas funcionan... Me gustaria saber la diferencia entre una u otra opcion!!
  19. // ***************************************
  20.     $type = "application/vnd.ms-excel";
  21. //  $type = "application/force-download";
  22. // ***************************************
  23.  
  24.     header("Content-Type:$type");
  25.  
  26. // Ambas lineas funcionan...
  27. // ***************************************
  28.     header("Content-Disposition: attachment; filename=\"$archivo\"");
  29. //  header("Content-Disposition: attachment; filename=$archivo");
  30. // ***************************************
  31.  
  32.     header("Content-Transfer-Encoding:binary");
  33.     header("Content-Length: " . $size);
  34.     readfile($path);
  35.  ?>

Ahora que por fin todo esta bien, me he propuesto hacer funcionar todo usando ASP y IIS. Por elmomento ya tengo una maquina con IIS y PHP con mi aplicacion funcionando... vere si puedo convertir lo que tengo en PHP a ASP, de manera que lomas probable es que vuelva a parecer pidiendo ayuda.

Gracias por todo.



















"

Etiquetas: llamada, php
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 18:11.